我的表有一列,其数据类型是带有时区的时间戳。数据库中的值类似于
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/