Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务器遵循GMT时间而不是本地时间_Java_Date_Calendar_Timezone - Fatal编程技术网

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

Java 服务器遵循GMT时间而不是本地时间,java,date,calendar,timezone,Java,Date,Calendar,Timezone,我有一个Java应用程序,在美国的服务器上运行。我的应用程序有一个方法,可以找到本地时间和从数据库获取的另一个时间戳值之间的差异,我需要检查这个差异是否大于86400秒(1天)。我这里的问题是,服务器正在跟踪GMT,我无法找到以毫秒为单位的本地时间。我试图找到美国时间和格林尼治标准时间之间的偏移量,然后从System.currentTimeMillis()中减去,在以下代码的帮助下找到美国的本地时间 int Offset_inmillis = Calendar.getInstance().get

我有一个Java应用程序,在美国的服务器上运行。我的应用程序有一个方法,可以找到本地时间和从数据库获取的另一个时间戳值之间的差异,我需要检查这个差异是否大于86400秒(1天)。我这里的问题是,服务器正在跟踪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和dstu inmillis值均为0)。我可以通过减去偏移量(对代码中的偏移量值进行硬编码)来提供解决方案,但我不想这样做,因为它不考虑夏令时,而且如果代码在不同时区的不同服务器上挂起,代码也不起作用


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

您可以使用java.util.TimeZone类来实现这一点。这里有一个小例子:

http://www.roseindia.net/java/example/java/util/TimeZones.shtml

希望这对您有所帮助。

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

// 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为单位

我在代码中使用了时区。问题不在于这一点。主要问题是服务器跟随GMT,我怀疑在不遵守夏时制的情况下,是否会返回不同的值。目前,它返回正确的值。谢谢你,伙计!