2013-05-06 105 views
1

當我運行下面的時候給予錯誤的一天:喬達時間解析

final DateTimeFormatter format = DateTimeFormat.forPattern("E, d MMM y HH:mm:ss Z"); 
final DateTime date = format.withLocale(Locale.US).parseDateTime("Fri, 15 May 2013 07:57:29 -0700"); 
System.out.println(date); 

輸出是:

2013-05-17T10:57:29.000-04:00 

出於某種原因,這是提前2天。我期望它是:

2013-05-15T10:57:29.000-04:00 

我在做什麼錯了?

回答

4

JodaTime在解析時使用day字段。 2013年5月的17th發生在週五,因此產量。您需要使用:

DateTime date = 
    format.withLocale(Locale.US).parseDateTime("Wed, 15 May 2013 07:57:29 -0700"); 
+0

因此'「2013年5月15日星期五」'星期五「在2013年5月15日或之後? – 2013-05-06 18:22:10

+1

JodaTime _adjusts_它將成爲'2013年5月17日星期五' – Reimeus 2013-05-06 18:24:40

+0

是否有文件記錄星期五(星期幾)比第15天(月中的某一天)具有更高的「優先級」? – jarnbjo 2013-05-06 18:26:01