在 Java 中解析 Youtube API 日期 [重复]

Posted

技术标签:

【中文标题】在 Java 中解析 Youtube API 日期 [重复]【英文标题】:Parsing a Youtube API Date in Java [duplicate] 【发布时间】:2013-03-22 23:13:38 【问题描述】:

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

示例“2013-03-31T16:46:38.000Z

附:找到解决办法yyyy-MM-dd'T'HH:mm:ss.SSSX

谢谢

【问题讨论】:

SimpleDateFormat 将能够解析你扔给它的任何日期字符串。你只需要告诉它期望的格式。此外,我相信 Apache Commons Lang 具有一些日期解析能力,这可能会简化事情。 我也这么认为,但是 java.text.ParseException: Unparseable date: "2013-03-31T16:46:38.000Z" 【参考方案1】:

这是一个ISO 8061 date time

实际上,至少在 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());
    

在Java8 之前,我会看一下Converting ISO 8601-compliant String to java.util.Date 和definitley 默认使用Joda Time 和某事。喜欢:

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

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

【讨论】:

以上是关于在 Java 中解析 Youtube API 日期 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Youtube API CommentThreads 的范围无效 - java

YouTube API - 按发布日期查询

如何使用 youtube api 获取按发布日期排序的播放列表的视频

Java日期时间API系列35-----Jdk8中java.time包中的新的日期时间API类应用,微秒和纳秒等更精确的时间格式化和解析。

使用新的 YouTube API v3 解析 YouTube 订阅者数量

使用新的 YouTube API v3 解析 YouTube 订阅者数量