2013-04-01 18 views
10

Jaki jest format przesłanej daty interfejsu API serwisu youtube, z którego mogę korzystać w SimpleDateFormat?Parsowanie daty interfejsu API Youtube w języku Java

przykład "2013-03-31T16:46:38.000Z"

PS: Rozwiązanie zostało znalezione yyyy-MM-dd'T'HH:mm:ss.SSSX

dzięki

+0

SimpleDateFormat będzie w stanie przeanalizować tylko dowolny łańcuch daty, który na niego rzucisz. Trzeba tylko powiedzieć mu, w jakim formacie można się tego spodziewać. Ponadto, Apache Commons Lang ma pewne możliwości analizowania Daty, jak sądzę, które mogą uprościć pewne rzeczy. – CodeChimp

+0

Też tak myślałem, ale java.text.ParseException: Nie można oddzielić daty: "2013-03-31T16: 46: 38.000Z" –

Odpowiedz

1

Jest ISO 8061 date time

Faktycznie, przynajmniej w Java8 to bardzo proste do analizowania tego jednego, ponieważ istnieje predefiniowany DateTimeFormatter. Tutaj mała testów jednostkowych jako demonstracji:

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()); 
    } 
} 

Przed Java8, chciałbym spojrzeć na Converting ISO 8601-compliant String to java.util.Date i zdecydowanie domyślnie używając Joda Time z czegoś. jak:

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

BTW, nie używaj new DateTime("2013-03-31T16:46:38.000Z") jak użyje domyślnej strefy czasowej, która prawdopodobnie nie jest to, co chcesz.

Powiązane problemy