elc*_*dro 1 java time calendar date
我在这里有这个片段:
Calendar cal = Calendar.getInstance();
System.out.println("calendar " + cal.getTime());
System.out.println("ms calendar" + cal.getTime().getTime());
long ms0 = cal.getTime().getTime();
cal.add(Calendar.HOUR, -1);
System.out.println("calendar one hour less " + cal.getTime());
System.out.println("ms calendar one hour less " + cal.getTime().getTime());
long ms1 = cal.getTime().getTime();
cal.setTimeInMillis(t0-t1);
System.out.println("result " + cal.getTime());
Run Code Online (Sandbox Code Playgroud)
我期待两个日期之间只有一个小时的差异.而不是我得到这个奇怪的结果:
calendar Wed Sep 23 09:51:36 CEST 2015
ms calendar 1442994696681
calendar one hour less Wed Sep 23 08:51:36 CEST 2015
ms calendar one hour less 1442991096681
result Thu Jan 01 02:00:00 CET 1970
Run Code Online (Sandbox Code Playgroud)
我错了什么?正如我在日期中看到的那样,我应该如何获得一小时的差异?
任何形式的帮助将不胜感激.提前致谢.
System.out.println("milis restantes:"+ (ms0-ms1));
Run Code Online (Sandbox Code Playgroud)
造成:
milis restantes:3600000
Run Code Online (Sandbox Code Playgroud)
您的程序正在按预期工作
编辑:
随着你编辑的问题,你需要了解日历从epoch开始计算milis ,在这种情况下女巫是:Thu Jan 01 01:00:00 CET 1970所以在这个日期增加一个小时将导致Thu Jan 01 02 :00:00 CET 1970
如果要检查此行为:
cal.setTimeInMillis(0);
System.out.println("result new Calendar " + cal.getTime());
Run Code Online (Sandbox Code Playgroud)
结果:
result new Calendar Thu Jan 01 01:00:00 CET 1970
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |