Разбор даты API Youtube в Java

Каков формат загруженной даты youtube api, которую я могу использовать в SimpleDateFormat?

Пример "2013-03-31T16:46:38.000Z"

P.S. найдено решение yyyy-MM-dd'T'HH:mm:ss.SSSX

спасибо

Ответ 1

Это время ожидания ISO 8061

Собственно, по крайней мере, в Java8 очень просто разобрать этот, поскольку существует предопределенный DateTimeFormatter. Здесь небольшая unit test как демонстрация:

import org.junit.Test;

import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

import static org.junit.Assert.assertEquals;

public class DateTimeFormatterTest {

    @Test
    public void testIsoDateTimeParse() throws Exception {
        // when
        final ZonedDateTime dateTime = ZonedDateTime.parse("2013-03-31T16:46:38.000Z", DateTimeFormatter.ISO_DATE_TIME);

        // then
        assertEquals(2013, dateTime.getYear());
        assertEquals(3, dateTime.getMonthValue());
        assertEquals(31, dateTime.getDayOfMonth());
        assertEquals(16, dateTime.getHour());
        assertEquals(46, dateTime.getMinute());
        assertEquals(38, dateTime.getSecond());
        assertEquals(ZoneOffset.UTC, dateTime.getZone());
    }
}

До Java8 я хотел бы взглянуть на Преобразование строки, совместимой с ISO 8601, в java.util.Date и definitley по умолчанию с использованием Joda Time с sth. как:

final org.joda.time.DateTime dateTime = new org.joda.time.DateTime.parse("2013-03-31T16:46:38.000Z");

BTW, не используйте new DateTime("2013-03-31T16:46:38.000Z"), поскольку он будет использовать ваш часовой пояс по умолчанию, который, вероятно, не тот, который вы хотите.