我做了以下事情:
String standardRange = "00:01:01";
SimpleDateFormat rangeFormatter = new SimpleDateFormat("hh:mm:ss");
Date range = rangeFormatter.parse(standardRange);
Run Code Online (Sandbox Code Playgroud)
现在:
range.getTime();
Run Code Online (Sandbox Code Playgroud)
..我的输出为-3539000而不是61,000
我不确定我做错了什么; 在调试时,cdate存在,属性包含一个fraction,其中包含值61,000,这就是我想要的.
您看到此情况的原因是您创建的日期实际上是在日期纪元的过去,而不是在其之后的 1 分秒内:
String standartRange = "00:01:01";
SimpleDateFormat rangeFormatter = new SimpleDateFormat("hh:mm:ss");
Date range = rangeFormatter.parse(standartRange);
System.out.println(new Date(0L));
System.out.println(new Date(0L).getTime());
System.out.println(range);
System.out.println(range.getTime());
Run Code Online (Sandbox Code Playgroud)
及其输出;
Thu Jan 01 01:00:00 GMT 1970
0
Thu Jan 01 00:01:01 GMT 1970
-3539000
Run Code Online (Sandbox Code Playgroud)
这里的纪元日期不正确 - 它应该是 00:00:00,但由于BST/GMT 更改日期和时区无法跟踪的历史错误。Sun/Oracle 似乎认为这是历史上的“不准确”。
查看错误报告 - 它更全面地描述了问题。
从您的语言(德语)来看,这可能不是直接由于 BST 问题造成的,但几乎可以肯定是相关的。