2013-04-01 71 views
10
一個YouTube API日期

什麼是YouTube API,我可以在SimpleDateFormat的使用的上傳日期的格式?解析Java中

例如 「2013-03-31T16:46:38.000Z

P.S.溶液發現yyyy-MM-dd'T'HH:mm:ss.SSSX

感謝

+0

SimpleDateFormat將能夠解析您拋出的任何日期字符串。你只需要告訴它預期它的格式。另外,我相信Apache Commons Lang具有一些日期解析能力,可以簡化事情。 – CodeChimp

+0

我也這麼認爲,但是 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 with 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"),因爲它會使用默認的時區,這可能不是你想要的。