2016-06-14 2 views
1

Мой входной строки:Почему строка до даты и обратно к строке приводит к двум различным строкам?

"2016-06-13T14:20:09.866Z" 

Мой выход строка:

"2016-06-13T10:20:09.866-04" 

Почему они разные, и как я могу сделать его выход в том же формате, что и на входе?

конвертировать из строки в дату:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.ENGLISH); 
dateFormat.parse((String) date)); 

В модульном тесте, преобразовать разобранную дату обратно в строку:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.ENGLISH); 
dateFormat.format(date); 
+0

Что такое последний 'z' в день? Означает ли это что-то? – Codebender

+0

@Codebender UTC – assylias

ответ

3

двумя датами одинаковы - только формат отличается (один - 2 вечера по UTC, другой - 10 утра со смещением -4 часа = 2 вечера UTC тоже).

Итак, я полагаю, что вы хотите, чтобы вторая строка также была в часовом поясе UTC. В этом случае вы можете просто установить часовой пояс второго DateFormat:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.ENGLISH); 
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));