上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
)。
如何让我的公式适用于所有时区?