Getting ZoneId from a SimpleTimeZone(从 SimpleTimeZone 获取 ZoneId)
问题描述
使用 Java,我有一个 SimpleTimeZone
实例,其中包含来自旧系统的 GMT 偏移和夏令时信息.
Using Java I have a SimpleTimeZone
instance with GMT offset and daylight saving time information from a legacy system.
我想检索 ZoneId
以便能够使用 Java 8 时间 API.
I would like to retrieve ZoneId
to be able to use Java 8 time API.
实际上,toZoneId
返回一个没有夏令时信息的 ZoneId
Actually, toZoneId
returns a ZoneId
without the daylight Saving time infos
SimpleTimeZone stz = new SimpleTimeZone( 2 * 60 * 60 * 1000, "GMT", Calendar.JANUARY,1,1,1, Calendar.FEBRUARY,1,1,1, 1 * 60 * 60 * 1000);
stz.toZoneId();
推荐答案
这里的解决方案我比较喜欢,因为它很简单,但是你需要一个 Date 和一个 TimeZone 作为参数来检索 ZoneId
Here the solution i prefer because it's simple, but you need a Date and a TimeZone as parameters to retrievethe the ZoneId
private ZoneId getZoneOffsetFor(final Date date, final TimeZone timeZone){
int offsetInMillis = getOffsetInMillis(date, timeZone);
return ZoneOffset.ofTotalSeconds( offsetInMillis / 1000 );
}
private int getOffsetInMillis(final Date date, final TimeZone timeZone){
int offsetInMillis = timeZone.getRawOffset();
if(timeZone.inDaylightTime(date)){
offsetInMillis += timeZone.getDSTSavings();
}
return offsetInMillis;
}
这篇关于从 SimpleTimeZone 获取 ZoneId的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从 SimpleTimeZone 获取 ZoneId
基础教程推荐
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 降序排序:Java Map 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01