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



我正在使用 joda 包来做一些时间的工作。我很困惑为什么我的模式没有做正确的工作来获得正确的一天,应该是 10。如果我打印出来,它会显示:什么是获取月日--> 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 。请参阅日期时间格式 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());

最新更新