在Android
上,似乎没有API可以轻松获取当地时间。通过网络挖掘,我找到了一些代码来使用UTC
类计算TimeZone
时间的偏移量:
final long timestamp = System.currentTimeMillis();
int offset = TimeZone.getDefault().getOffset(timestamp);
if (TimeZone.getDefault().inDaylightTime(Calendar.getInstance().getTime())) {
offset = offset - TimeZone.getDefault().getDSTSavings();
}
现在,这段代码几乎是我所需要的,但很快就会明白公式是错误的。例如。对于CET
,偏移量变为3600000,但对于CEST
,它将为0 - 这是错误的(应该是7200000)。
显然,我可以修改代码以使用加法而不是减法,但我不确定这是否安全,因为原作者明确指出需要减法(我认为这是PST
)。
如何让我的公式适用于所有时区?