如何通过OsloneTimeZone数据库获取Java 1.6中的TimeZone值。
我正在传递时区lyk的base64字符串。"亚洲/加尔各答"。之后,我必须得到这个Tiezone值的数字格式,比如+5.5。
请建议如何做。
相当简单。这个时区数据库是在java 1.6中构建的,但是您可能需要更新您的tzdata版本,请查看此处。
因此代码如下
TimeZone localTimeZone = TimeZone.getTimeZone("Asia/Kolkata");
// next line yields milliseconds
int rawOffset = localTimeZome.getRawOffset();
// next line converts to hours
double hourOffset = (rawOffset / 1000) / 3600.0;
如果你对数字表示感到满意(如果值为正,则没有前导加号),那么你就完成了。如果您想要一个带有前导加号的版本,请添加以下行:
String hourOffsetString = (hourOffset > 0.0 ? "+" + hourOffset : "" + hourOffset);
为我运行完整的代码得到+5.5,我想我们都同意这是加尔各答的正确偏移量。