我在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
有什么不对?
答案 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