2014-12-03 4 views
0

У меня есть время в миллисекундах, которое мне нужно преобразовать в 2009-01-31T06:34:45Z с использованием библиотеки Joda. Я написал программу ниже, но парсер даты добавляет миллисекунды по умолчанию.Joda DateTime parser добавляет миллисекунды без необходимости

DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
DateTime dateTime = new DateTime(System.currentTimeMillis()); 
String str = fmt.print(dateTime); 
System.out.println("Date as string - " + str); 

dateTime = fmt.parseDateTime(str); 
System.out.println("Date as Joda dataTime - " + dateTime); 

Ниже приводится выход:

Date as string - 2007-03-24T23:03:44Z 
Date as Joda dataTime - 2007-03-24T23:03:44.000+05:30 

.000+05:30 становится добавлен к dateTime объекта. Метод print печатает дату Date в правильном формате, но метод parse добавляет миллисекунды и часовой пояс без необходимости. Пожалуйста, дайте мне знать ошибку в программе.

ответ

2

.000+05:30 становится добавлены к объекту DATETIME

Нет, он включен в результате dateTime.toString(), это все. A DateTime value не имеет представления о своем собственном формате - это только дата/время/календарь/зона. Если вы хотите преобразовать значение DateTime в конкретный формат, вам нужно снова пройти через форматирование - что вы четко знаете, как это сделать, поскольку вы уже делаете это в своем коде.

Очень важно различать «данные в объекте» и «желаемое текстовое представление». A DateTimeвсегда хранится с точностью до миллисекунды, независимо от того, из чего это произошло.

Смежные вопросы