用Java解析Youtube API日期

Ser*_*kyi 10 java youtube

我可以在SimpleDateFormat中使用youtube api上传日期的格式是什么?

例子" 2013-03-31T16:46:38.000Z"

找到PS解决方案 yyyy-MM-dd'T'HH:mm:ss.SSSX

谢谢

spa*_*spa 3

这是ISO 8061 日期时间

实际上,至少在 Java8 中,解析它非常简单,因为有一个预定义的DateTimeFormatter. 这里有一个小单元测试作为演示:

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

在 Java8 之前,我会看一下Converting ISO 8601-driven String to java.util.Date,并且默认使用Joda Time with sth 。喜欢:

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

顺便说一句,不要使用,new DateTime("2013-03-31T16:46:38.000Z")因为它将使用您的默认时区,这可能不是您想要的。