如何找到不同时区中两个日期之间的差异(以秒为单位)



我有一段代码可以找到两个日期之间的差异(格式为 yyyy-MM-dd hh:mm:ss)。此代码在全球多个服务器中运行。两个日期中的一个是运行代码的特定时区的当前时间(服务器时间),另一个是从数据库中获取的时间。如果这两个时间之间的差异大于 86400 秒(1 天),那么它应该打印"无效"否则,它应该打印"有效"。我在代码方面面临的问题是当我在本地运行它时,它工作正常,但是当我将其部署到美国的服务器上时,它会考虑 GMT 时间而不是本地时间。无论代码在哪里运行,我都希望当前时间和从数据库中获取的时间之间的差异,如果它大于 86400 秒,我想打印无效。如何在java中实现这一点?PS:我尝试使用日期对象,但它只在任何地方考虑 GMT。

我会在任何地方使用 GMT,并且只转换为本地时间以用于显示目的。

要找到差异,请将两个时间转换为相同的时区(例如 GMT)并取差异。

您可以通过以下示例代码进行操作。

Date date = new Date();
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
formatter.setTimeZone(TimeZone.getTimeZone("CET"));
Date date1 = dateformat.parse(formatter.format(date));
// Set the formatter to use a different timezone
formatter.setTimeZone(TimeZone.getTimeZone("IST"));
Date date2 = dateformat.parse(formatter.format(date)); 
// Prints the date in the IST timezone
//    System.out.println(formatter.format(date));

现在将日期 1 与日期 2 进行比较

首先,我同意彼得·劳里(Peter Lawrey)的回答。通常,最好在数据库中存储单个区域的所有时间,并根据用户的区域设置为用户呈现偏移量。

若要查找差异,请使用方法 getTime() 从每个日期的纪元中获取时间(以毫秒为单位)。1 天差值的计算公式为 86400 * 1000 毫秒。或者,也许,将从纪元开始的时间存储在数据库中,并在检索时使用数据库过程/函数。

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新