gpt4 book ai didi

java - 服务器遵循 GMT 时间而不是本地时间

转载 作者:行者123 更新时间:2023-12-01 15:23:18 25 4
gpt4 key购买 nike

我有一个 Java 应用程序,在美国的服务器上运行。我的应用程序有一个方法可以查找本地时间和从数据库中获取的另一个时间戳值之间的差异,我需要检查这个差异是否大于 86400 秒(1 天)。我的问题是,服务器遵循 GMT我无法找到以毫秒为单位的本地时间。我尝试找到美国时间和 GMT 时间之间的偏移量,然后在以下代码的帮助下从 System.currentTimeMillis() 中减去以找到美国本地时间

int Offset_inmillis = Calendar.getInstance().getTimeZone().getRawOffset();
int DSTSavings_inmillis = Calendar.getInstance().getTimeZone().getDSTSavings();
long localtime_inmillis = System.currentTimeMillis() + DSTSavings_inmillis + Offset_inmillis;

但是由于服务器正在考虑 GMT,因此上面的代码再次给出以毫秒为单位的 GMT 时间值(上面代码中的 Offset_inmillis 和 DSTSavings_inmillis 值都是 0)。我可以通过减去偏移量(对代码中的偏移值进行硬编码)来提供解决方法,但我不想这样做,因为它不考虑夏令时,并且如果将代码提升到不同的服务器上,则代码将无法工作不同的时区。

我需要代码适用于所有时区的解决方案。为此,我需要找到服务器的本地时间(以毫秒为单位)的解决方案(但在本例中服务器遵循 GMT 时间)。有人可以帮忙吗?

最佳答案

查找本地时间和从数据库获取的另一个时间戳值之间的差异

// Change 'America/New_York' depending on the local timezone of your server
TimeZone tz = TimeZone.getTimeZone("America/New_York");
// Gives the offset of your server timezone from the GMT
long tzoffset = tz.getOffset(Calendar.getInstance().getTimeInMillis());

顺便说一句,理想情况下数据库时间戳也应该采用 GMT

关于java - 服务器遵循 GMT 时间而不是本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10548502/

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