2013-06-26 70 views
1

所以,基本上我想实现一个字符串格式如下:转换日期或日历类型为字符串格式

2012-06-17T08:00:00.000+01:00 

我得到一个字符串格式,然后我解析成不同的格式原来的日期。

当我使用的SimpleDateFormat与格式(YYYY-MM-dd'T'HH:MM:ss.sssZ),I得到以下输出:

2013-06-17T07:00:00.000+0530 

这里0530应该是05 :30

当我设定上述日期为日历类型,然后将其转换为字符串,我得到以下格式:

2013-06-17T07:00:00+05:30 

在这里,我没有得到秒后.000。

任何想法如何实现,而无需使用JodaTime。需要日期操作,字符串和日历类型只有

+0

检查Java文档[这里](http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html )'s'指秒和'S'到毫秒。 –

回答

2

首先让你格式化额外:使用XXX像这样和使用大写S得到毫秒

SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX") 

UPDATE:上面并没有在1.6

工作

哟可以尝试但以下

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ") 
{ 
    public StringBuffer format(Date date, StringBuffer toAppendTo, java.text.FieldPosition pos) 
    { 
     StringBuffer toFix = super.format(date, toAppendTo, pos); 
     return toFix.insert(toFix.length()-2, ':'); 
    }; 

this post for more

+0

资本'S'(SSS) –

+0

谢谢,没有看到那部分 –

+0

越来越java.lang.IllegalArgumentException:非法模式字符'X' – sanbhat

0

SimpleDateFormat的模式

"yyyy-MM-dd'T'HH:mm:ss.SSSXXX" 
+0

不知道这是否会在Java 1.6中工作 – IndianNoob

+0

在1.6上,你运气不好。它不支持ISO 8601时区。 –

+0

如果'GMT-08:00'对你没有问题,试试1.6上的'zzz'。 –

相关问题