我在Java Swing中制作模拟时钟.要计算时钟指针角度,我需要:
System.currentTimeMillis() 对于2)和3)我想到使用
TimeZone.getDefault().getRawOffset()和TimeZone.getDefault().getDSTSavings().
但无论当前日期是在冬季/夏季时间getDSTSavings()总是返回3600000.
它看起来像只检查,看看是否能区在DST管理,如果这样返回3600000,否则0.
这是一个错误getDSTSavings()吗?
如果不是那么只有以DST毫秒为单位获得当前校正的方法是使用Calendar实例,如:Calendar.getInstance.get(Calendar.DST_OFFSET)?
Calendar cal1 = Calendar.getInstance(TimeZone.getDefault()); //currentZone: CET/CEST +1/+2, GMT+1:00
System.out.println("System time, " + System.currentTimeMillis()); //UTC current milis
System.out.println("Calendar time, " + cal1.getTime().getTime()); //UTC current milis
System.out.println("Calendar milis, " + cal1.getTimeInMillis()); //UTC current milis
System.out.println("Calendar Zone Offset: " + cal1.get(Calendar.ZONE_OFFSET));
System.out.println("Calendar DST Offset: " + cal1.get(Calendar.DST_OFFSET));
System.out.println("Calendar Zone Offset: " …Run Code Online (Sandbox Code Playgroud)