【发布时间】:2014-05-10 10:26:15
【问题描述】:
我想你们中的一些人读了标题,然后说“哦,关于 java 的基于 0 的月份系统的另一个问题......”。好吧,这次不是。
切换到夏令时后,我的 java 日历对象的行为异常。将月份设置为 6 月,实际上将其设置为 7 月。我不知道为什么,但有人建议我在日历的构造函数参数中设置 Locale - 对象。那没有用。以下代码在我的控制台中返回01-07-14。
有什么想法吗?
public class test {
public static void main(String[] args){
Locale locale = new Locale("da-DK");
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy");
Calendar date = new GregorianCalendar(locale);
date.set(Calendar.MONTH, Calendar.JUNE);
System.out.println(sdf.format(date.getTime()));
}
}
更新:
这也返回01-07-14
public class test {
public static void main(String[] args){
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy");
TimeZone timeZone = TimeZone.getTimeZone("Europe/Copenhagen");
Calendar date = new GregorianCalendar(timeZone);
date.set(Calendar.MONTH, Calendar.JUNE);
System.out.println(sdf.format(date.getTime()));
}
}
【问题讨论】:
-
要正确处理夏令时,您需要告诉代码使用哪个时区。
-
“切换到夏令时”是指有史以来第一次,还是每年这个时候经常发生?
-
这是每年都会发生的事,但这是我第一次遇到受它影响的系统。它是在不到半年前制作的,因此是此后的第一次。
-
@nablex 感谢您的建议。不幸的是,它没有用。
标签: java date dst gregorian-calendar