问题描述
java.util.Timezone 包中似乎没有 EDT 时区 ID,如果我想将 EDT - (GMT-4:00) 和 CDT 作为时区,我该怎么做。我已经在下面发布了我的代码。
public static void main(String arg[]) {
String timeZone = "EDT";
String timeZoneInGMTFormat = "";
TimeZone timezone = TimeZone.getTimeZone(timeZone);
Date date = new Date();
int offset = timezone.getRawOffset();
timeZoneInGMTFormat = timeZone + " - (GMT"
+ String.format("%s%02d:%02d",offset >= 0 ? "+" : "",offset / 3600000,(offset
/ 60000) % 60) + ")";
System.out.print("Time format = " + timeZoneInGMTFormat);
}
解决方法
这是我的一项测试的结果。
Time format = US/Eastern - (GMT-4:00)
Time format = US/Central - (GMT-5:00)
我必须使用夏季的特定日期来获取夏令时偏移量。
这是我测试的代码。
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class Timezone {
public static void main(String arg[]) {
String timeZone = "US/Eastern";
calculateOffset(timeZone);
timeZone = "US/Central";
calculateOffset(timeZone);
}
private static void calculateOffset(String timeZone) {
TimeZone timezone = TimeZone.getTimeZone(timeZone);
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.MONTH,07);
Date date = c1.getTime();
int offset = timezone.getOffset(date.getTime());
String timeZoneInGMTFormat = timeZone + " - (GMT"
+ String.format("%s%02d:%02d",offset >= 0 ? "+" : "",offset / 3600000,(offset / 60000) % 60) + ")";
System.out.println("Time format = " + timeZoneInGMTFormat);
}
}