Android 在考虑DST的情况下计算准确的UTC偏移量?

Android 在考虑DST的情况下计算准确的UTC偏移量?,android,timezone,utc,dst,Android,Timezone,Utc,Dst,在Android上,似乎没有API可以轻松获取本地时间。通过网络挖掘,我找到了一些代码,可以使用时区类计算与UTC时间的偏移量: final long timestamp = System.currentTimeMillis(); int offset = TimeZone.getDefault().getOffset(timestamp); if (TimeZone.getDefault().inDaylightTime(Calendar.getInstance().getTime())) {

在Android上,似乎没有API可以轻松获取本地时间。通过网络挖掘,我找到了一些代码,可以使用
时区
类计算与
UTC
时间的偏移量:

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


如何使我的公式适用于所有时区?

您的最终目标是简单地获取本地时间吗?我的最终目标是获取手机本地时间的准确UTC偏移量。