Joda时间模式不正确?显示错误的一天

时间:2015-01-29 18:07:01

标签: java jodatime

我正在使用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存在问题吗?我需要做些什么来解决它?

1 个答案:

答案 0 :(得分:2)

首先,你使用了错误的时区模式。使用Z代替+xxxx。请参阅DateTimeFormat API。

其次,您还应该为格式化程序指定时区,否则它将在您的本地时区格式化。因此,如果您的时区为10,则可能无法准确+5:00。当然, 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());