AkD*_*AkD 4 java timezone datetime jodatime
我想检查给定的DateTime是否在当前DateTime之前或之后.我将输入时间和当前时间转换为公共时区(比如UTC)并比较DateTime.但我偶然发现了Joda Api,因此我很想知道Joda是否能够在没有时区转换的情况下做到这一点.例:
clientDateTime.isBeforeNow()
Run Code Online (Sandbox Code Playgroud)
是的,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);
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
与"现在"比较时:
System.out.println("now: " + new DateTime().getMillis());
System.out.println(ny.isBeforeNow());
System.out.println(ny.plusHours(1).isAfterNow());
System.out.println(tk.isBeforeNow());
System.out.println(tk.plusHours(1).isAfterNow());
Run Code Online (Sandbox Code Playgroud)
输出:
now: 1355625752323
true
true
true
true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3686 次 |
| 最近记录: |