Java比较时间和时区

标签 java date time timezone

我的表有一列,其数据类型是带有时区的时间戳。数据库中的值类似于

  • 2001 年 11 月 26 日 12.00.00.000000000 PM -07:00
  • 2001 年 11 月 26 日 12.00.00.000000000 PM -08:00

我有一个在 UTC 时区运行的 tomcat 服务器。我知道如何比较具有相同时区的两个日期,但我无法弄清楚是否可以将服务器时间与具有时区详细信息(如 -7.00-8.00+5:30)的数据库时间进行比较。

java中有没有一种方法可以将数据库中的时间转换为公共(public)时区,然后将其与另一个时间进行比较?

最佳答案

您可以使用joda-time方便地将您的偏移量和日期解析为通用日期(例如 UTC)。

以您帖子中提到的 2 个时间实例为例:

String time1 = "26-NOV-01 12.00.00.000000000 PM -07:00";
String time2 = "26-NOV-01 12.00.00.000000000 PM -08:00";
DateTimeFormatter parser = DateTimeFormat.forPattern("dd-MMM-yy hh.mm.ss.SSSSSSSSS aa Z").withZoneUTC(); // joda time date time formatter instance with a common UTC timezone

System.out.println(parser.parseDateTime(time1)); // parse to date time - gives: 2001-11-26T19:00:00.000Z
System.out.println(parser.parseDateTime(time2)); // parse to date time - gives: 2001-11-26T20:00:00.000Z

System.out.println(parser.parseDateTime(time2).compareTo(parser.parseDateTime(time1))); // Comparing both the times here - gives: 1

在这里,您可以比较具有不同偏移量的两个时间,并将它们标准化为共同时区。同样,您可以选择自己喜欢的时区并方便地使用这些时间实例。

关于Java比较时间和时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21888400/

相关文章:

ios - DateFormatting结果为null

java - Android spinner Data Binding 使用 XML 并显示选定的值

MySQL 日期之间无法正常工作

Javascript - 将日期字符串转换为美国日期格式

javascript - 在计时器上显示当前视频时间(小时 :minutes:seconds)

c++ - chrono库的实现

java - 数组实例化

java - 您可以通过转换为列表来检查 char 数组是否包含特定的 char 值吗?

java - 我该如何解决这个: The method received in the request-line is known by the origin server but not supported by the target resource

python - 如何检查日期时间是否超过 20 秒