【发布时间】:2015-06-10 10:00:21
【问题描述】:
如果我将两个 DateTime 与两个不同的时区进行比较,有问题,或者我应该让他在同一个时区?
例子:
DateTimeZone a = new DateTimeZone("Pacific/Kiritimati");
DateTimeZone b = new DateTimeZone("Pacific/Gambier");
DateTime dateOne = new DateTime(a);
DateTime dateTwo = new DateTime(b);
if (dateOne.compareTO(dateTwo) == 0) {
// yes
} else {
// no
}
谢谢你。 (对不起我的英语不好)
【问题讨论】:
-
您决定如何比较。原则上,此类时间戳有两个标准(本地和全局)。要么比较时刻(在全局时间线上),要么只比较与忽略时区相关的本地时间戳。无论您决定什么,它都必须适合您的具体用例。您使用的
compareTo()-方法只比较瞬间,而不是本地时间戳表示。也许这对你来说已经足够了。 -
重要提示:如果您想使用表达式
dateOne.compareTO(dateTwo) == 0比较两个瞬间,那么您可能会体验到它几乎总是false,因为DateTime的时间部分可以低至毫秒。如果您的DateTime-objects 的来源是时钟(通常发出不同的毫秒),则尤其如此。 -
仅供参考,Joda-Time 项目现在位于maintenance mode,团队建议迁移到java.time 类。见Tutorial by Oracle。
标签: java datetime time jodatime