2013-06-26 2 views
1

Таким образом, в основном я пытаюсь добиться следующего формата в строку:Преобразовать или тип календаря в формат строки

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

я получаю оригинальную дату в виде строки, которые я потом разобрать в различные форматы.

При использовании SimpleDateFormat с форматом, как (YYYY-MM-dd'T'HH: мм: ss.sssZ), я получаю следующий вывод:

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

Здесь +0530 должно быть +05 : 30

Когда я установил выше даты в тип календаря, а затем преобразовать его в строку, я получаю следующий формат:

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

Здесь я не получаю .000 после секунды.

Любые идеи о том, как это можно достичь, без использования JodaTime. Необходимость манипуляциями в Дата, String и календарь только тип

+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

Yo может попробовать следующее однако

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

Попробуйте 'zzz' на 1.6, если' GMT-08: 00' в порядке с вами. –