Java Jdeveloper
Java Jdeveloper
当我在 JDeveloper 中 运行 以下 java 代码时,我得到了错误的输出。可能是什么原因造成的?
System.out.println(TimeZone.getTimeZone("Australia/Sydney").inDaylightTime(new Date()));
System.out.println(TimeZone.getTimeZone("Europe/Moscow").inDaylightTime(new Date()));
我期望输出为:
真的
假
但是,我得到的是:
错误的
真
PS:这适用于其他几个时区,例如 "America/Fort_Wayne" 和 "Europe/Berlin"。
由于new Date()
的使用没有完全遵循How to create a Minimal, Complete, and Verifiable example的原则,这里是:
public static void main(String[] args) {
Date date = new Date(1444817534489L); // 2015-10-14 10:12:14.489 UTC
printDate(date, "UTC");
printDate(date, "Australia/Sydney");
printDate(date, "Europe/Moscow");
printDate(date, "Europe/Berlin");
printDate(date, "America/Fort_Wayne");
}
private static void printDate(Date date, String timeZoneID) {
TimeZone timeZone = TimeZone.getTimeZone(timeZoneID);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");
df.setTimeZone(timeZone);
System.out.printf("%-20s %-30s inDaylightTime: %s%n", timeZoneID + ":",
df.format(date), timeZone.inDaylightTime(date));
}
输出
UTC: 2015-10-14 10:12:14.489 UTC inDaylightTime: false
Australia/Sydney: 2015-10-14 21:12:14.489 AEDT inDaylightTime: true
Europe/Moscow: 2015-10-14 13:12:14.489 MSK inDaylightTime: false
Europe/Berlin: 2015-10-14 12:12:14.489 CEST inDaylightTime: true
America/Fort_Wayne: 2015-10-14 06:12:14.489 EDT inDaylightTime: true
所以,true false
如您所料。如果你看到不一样,也许你的日期不一样,不打印,你怎么知道?
当我在 JDeveloper 中 运行 以下 java 代码时,我得到了错误的输出。可能是什么原因造成的?
System.out.println(TimeZone.getTimeZone("Australia/Sydney").inDaylightTime(new Date()));
System.out.println(TimeZone.getTimeZone("Europe/Moscow").inDaylightTime(new Date()));
我期望输出为: 真的 假
但是,我得到的是: 错误的 真
PS:这适用于其他几个时区,例如 "America/Fort_Wayne" 和 "Europe/Berlin"。
由于new Date()
的使用没有完全遵循How to create a Minimal, Complete, and Verifiable example的原则,这里是:
public static void main(String[] args) {
Date date = new Date(1444817534489L); // 2015-10-14 10:12:14.489 UTC
printDate(date, "UTC");
printDate(date, "Australia/Sydney");
printDate(date, "Europe/Moscow");
printDate(date, "Europe/Berlin");
printDate(date, "America/Fort_Wayne");
}
private static void printDate(Date date, String timeZoneID) {
TimeZone timeZone = TimeZone.getTimeZone(timeZoneID);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");
df.setTimeZone(timeZone);
System.out.printf("%-20s %-30s inDaylightTime: %s%n", timeZoneID + ":",
df.format(date), timeZone.inDaylightTime(date));
}
输出
UTC: 2015-10-14 10:12:14.489 UTC inDaylightTime: false
Australia/Sydney: 2015-10-14 21:12:14.489 AEDT inDaylightTime: true
Europe/Moscow: 2015-10-14 13:12:14.489 MSK inDaylightTime: false
Europe/Berlin: 2015-10-14 12:12:14.489 CEST inDaylightTime: true
America/Fort_Wayne: 2015-10-14 06:12:14.489 EDT inDaylightTime: true
所以,true false
如您所料。如果你看到不一样,也许你的日期不一样,不打印,你怎么知道?