Java - Calendar.getTime不检索使用Calendar.setTime设置的日期

时间:2016-05-02 10:05:29

标签: java date calendar

我在Java中有以下代码

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Test {
    public static void main(String[] args) {
        try {
            SimpleDateFormat SDF = new SimpleDateFormat("YYYY-MM-dd'T'HH:mm:ss");
            Calendar date = Calendar.getInstance();
            date.setTime(SDF.parse("2011-02-01T00:00:00"));
            System.out.println(SDF.format(date.getTime()));
        } catch (Exception e) {

        }
    }
}

我希望在控制台中看到以下字符串

2011-02-01T00:00:00

相反,我看到了

2011-12-26T00:00:00

有什么不对?

1 个答案:

答案 0 :(得分:0)

我改变格式:" yyyy-MM-dd' H&H:mm:ss"

SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Calendar date = Calendar.getInstance();
date.setTime(SDF.parse("2011-02-01T00:00:00"));
System.out.println(SDF.format(date.getTime()));

输出为2011-02-01T00:00:00

" Y" :周年

" y" :年

https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

来自文档:

"如果是周年' Y'指定并且日历不支持任何周年,而是使用日历年(' y')。可以通过调用getCalendar()。isWeekDateSupported()来测试周年的支持。"

在某些日历中" Y"和" y"是相同的,但不是格里高利历的情况。

https://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html#isWeekDateSupported%28%29