乔达时间模式不正确?显示错误的日期

Joda time pattern incorrect? Showing wrong day

我正在使用 joda 包来处理我的一些工作。我很困惑为什么我的模式没有做正确的工作以获得正确的一天,应该是 10。如果我打印出来它显示: getDayOfMonth 是什么 --> 14

public void testTime() {
        String startDate = "Fri, 10 Jan 2015 23:10:04 +0000";
        String pattern = "EEE, dd MMM yyyy HH:mm:ss +xxxx";
        DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern);
        DateTime time1 = fmt.parseDateTime(startDate);
        System.out.println("what is the getDayOfMonth --> " + time1.getDayOfMonth());
    }

EEE 有问题吗?我需要做什么来修复它?

首先,您使用的时区模式有误。使用 Z 而不是 +xxxx。参见 DateTimeFormat API。

其次,您还应该为您的格式化程序指定时区,否则它将按照您当地的时区进行格式化。因此,如果您的时区是 +5:00,您可能无法准确获得 10。当然,1 月 10 日 是星期六,而不是星期五。总之,以下应该可以正常工作:

String startDate = "Sat, 10 Jan 2015 23:10:04 +0000";
String pattern = "EEE, dd MMM yyyy HH:mm:ss Z";
DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern).withZone(DateTimeZone.UTC);
DateTime time1 = fmt.parseDateTime(startDate);
System.out.println("what is the getDayOfMonth --> " + time1.getDayOfMonth());