gpt4 book ai didi

java - 将 UTC 时间转换为手机本地时间

转载 作者:行者123 更新时间:2023-12-01 16:02:22 26 4
gpt4 key购买 nike

我正在尝试从服务器 UTC 时间获取本地时间。我从服务器获取 UTC 时间——并且我想让它适合每台 Android 手机,无论它是在加利福尼亚还是在中国。

这是我现在使用的代码——但是它不起作用。

我从服务器获取的时间是

"2010-08-17 19:41:13.0"

我用来获取差异(以秒为单位)的代码如下:

public static long getSecondsDifference(Timestamp timeStamp) {
final Calendar calendar = Calendar.getInstance(Locale.getDefault());

int refrenceOffset = TimeZone.getDefault().getOffset(timeStamp.getTime());

final long referenceSeconds = (timeStamp.getTime() + refrenceOffset) / 1000;
final long currentTimeSeconds = (calendar.getTimeInMillis()) / 1000;

final long differenceMinutes = (currentTimeSeconds - referenceSeconds) / 60;

return differenceMinutes;
}

时间戳来自 java.sql.timestamp 包。

现在我所在的时间是上午 11:50 - 该方法返回给定的服务器时间是 -53 分钟前(所以显然做错了什么:))

最佳答案

这与夏令时有关。自从我住的地方是太平洋夏令时以来——我必须做出补偿。

public static long getSecondsDifference(Timestamp timeStamp) {
final Calendar calendar = Calendar.getInstance(Locale.getDefault());

int offset = TimeZone.getDefault().getOffset(timeStamp.getTime());

if (TimeZone.getDefault().inDaylightTime(Calendar.getInstance().getTime())) {
offset = offset - TimeZone.getDefault().getDSTSavings();
}
final long referenceSeconds = (timeStamp.getTime() + offset) / 1000;

final long currentTimeSeconds = (calendar.getTimeInMillis()) / 1000;

final long differenceSeconds = (currentTimeSeconds - referenceSeconds);

return differenceSeconds;
}

关于java - 将 UTC 时间转换为手机本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3505885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com