Java isBeforeNow isAfterNow比较的Joda Api句柄时区

Java isBeforeNow isAfterNow比较的Joda Api句柄时区,java,datetime,timezone,jodatime,Java,Datetime,Timezone,Jodatime,我想检查给定的日期时间是在当前日期之前还是之后 日期时间。我正在将输入时间和当前时间转换为公共时间 时区(比如UTC)和比较日期时间。但我偶然发现了乔达 Api,因此我很想知道Joda是否有能力做到这一点 没有时区转换。例如: 是的,Joda DateTime与当前时间的比较不需要时区转换 当与当前时间(例如DateTime.isBeforeNow和DateTime.isAfterNow)进行比较时,Joda只是比较自1970年1月1日以来的基本绝对毫秒数。无论时区如何,相同的时间瞬间都具有完全

我想检查给定的日期时间是在当前日期之前还是之后 日期时间。我正在将输入时间和当前时间转换为公共时间 时区(比如UTC)和比较日期时间。但我偶然发现了乔达 Api,因此我很想知道Joda是否有能力做到这一点 没有时区转换。例如:


是的,Joda DateTime与当前时间的比较不需要时区转换

当与当前时间(例如
DateTime.isBeforeNow
DateTime.isAfterNow
)进行比较时,Joda只是比较自1970年1月1日以来的基本绝对毫秒数。无论时区如何,相同的时间瞬间都具有完全相同的绝对毫秒值

例如,瞬间1355625068295对应于:

DateTime dt = new DateTime(1355625068295L);

DateTime utc = dt.withZone(DateTimeZone.UTC);
DateTime ny = dt.withZone(DateTimeZone.forID("America/New_York"));
DateTime tk = dt.withZone(DateTimeZone.forID("Asia/Tokyo"));

System.out.println(utc.getMillis() + " is " + utc);
System.out.println(ny.getMillis() + " is " + ny);
System.out.println(tk.getMillis() + " is " + tk);
输出:

1355625068295 is 2012-12-16T02:31:08.295Z
1355625068295 is 2012-12-15T21:31:08.295-05:00
1355625068295 is 2012-12-16T11:31:08.295+09:00
now: 1355625752323
true
true
true
true
与“现在”相比:

输出:

1355625068295 is 2012-12-16T02:31:08.295Z
1355625068295 is 2012-12-15T21:31:08.295-05:00
1355625068295 is 2012-12-16T11:31:08.295+09:00
now: 1355625752323
true
true
true
true

完全有道理。谢谢@cambecc@Akd很高兴听到!那么,你能接受这个答案吗,或者至少投赞成票