Формат даты JodaTime DateTime, ISO8601 GMT
Как получить следующий формат:
2015-01-31T00:00:00Z
(формат даты ISO8601 GMT)
Из объекта DateTime во время joda (java)? Например.
DateTime time = DateTime.now();
String str = // Get something like 2012-02-07T00:00:00Z
Спасибо!:)
Ответы
Ответ 1
JODA Javadoc указывает, что toString
для DateTime
выводит дату в ISO8601. Если вам нужно, чтобы все поля времени были обнулены, сделайте следующее:
final DateTime today = new DateTime().withTime(0, 0, 0, 0);
System.out.println(today);
Это будет включать миллисекунды в выходной строке. Чтобы избавиться от них, вам нужно использовать форматтер, который предлагает @jgm.
Если вы хотите, чтобы он соответствовал формату, который вы запрашиваете в этом сообщении (с буквальным символом Z
), это будет работать:
System.out.println(today.toString(DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'")));
Если вам нужно значение UTC, инициализируйте его следующим образом:
final DateTime today = new DateTime().withZone(DateTimeZone.UTC).withTime(0, 0, 0, 0);
Ответ 2
@jgm
В документе описывается ISODateTimeFormat.dateTime()
Возвращает форматтер, который объединяет полную дату и время, разделенные 'T' (yyyy-MM-dd'T'HH: mm: ss.SSSZZ).
но если вы установите часовой пояс, например,
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
System.out.println(fmt.print(new DateTime().toDateTime(DateTimeZone.UTC)));
он заканчивается на Z.
Ответ 3
использовать ISODateTimeFormat
DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeNoMillis();
String str = fmt.print(dt);
Ответ 4
Настройте a DateTimeFormatter
:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ");
formatter.print(time);