Java Calendar类显示错误的日期

时间:2014-02-05 11:07:26

标签: java datetime time calendar

我正在尝试使用Calender类获取当前日期。我在tomcat上运行我的Web应用程序。但我不明白为什么它将月份日显示为36.下面是我的代码。

SimpleDateFormat df = new SimpleDateFormat("YYYY/MM/DD hh:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println("Current Date Time : " + df.format(cal.getTime()));

输出

Current Date Time : 2014/02/36 04:30:14

任何人都可以解释一天36岁怎么样?

Calender类是显示系统时间还是tomcat服务器运行自己的时间?

2 个答案:

答案 0 :(得分:5)

那是因为D代表日年。您需要使用dd代替日期。请查看docs关于不同模式及其表示的信息。

答案 1 :(得分:1)

似乎您想要的格式几乎是标准ISO 8601 format。如果是这样,您应该知道取代捆绑的java.util.Date/Calendar类的Joda-Time库默认使用ISO 8601格式。因此无需定义格式化程序,Joda-Time已经内置了一个。

与Java 8捆绑在一起的新java.time.* package(受Joda-Time启发)默认使用ISO 8601格式。

使用Joda-Time 2.3的一些示例代码...

DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime dateTime_Paris = new DateTime( 2014, 1, 24, 10, 0, 0, timeZone );

// Convert to UTC/GMT.
DateTime dateTime_UTC = dateTime_Paris.toDateTime( DateTimeZone.UTC );

System.out.println( "dateTime_Paris: " + dateTime_Paris );
System.out.println( "dateTime_UTC: " + dateTime_UTC );

跑步时......

dateTime_Paris: 2014-01-24T10:00:00.000+01:00
dateTime_UTC: 2014-01-24T09:00:00.000Z