-1

我有理由在 JAVA 标准 API 中摆弄,我的天哪,我讨厌其中的日期。所以我的问题是时间单位转换。现在作为输入,我得到一个字符串:“19.1”、“33.79”、“10.321”或“10.23.66”......

所以人们会期待“mm.ss.SS”、“ss.SS”、“ss.SSS”模式和 SimpleDateFormat 的魔力:

SimpleDateFormat dateFormat = new SimpleDateFormat("ss.SS");
dateFormat.setTimeZone(getTimeZone("GMT"));
dateFormat.parse("19.1").getTime();

但结果有些奇怪。我希望得到 19100 磨机,尽管我得到 19001L 磨机。这是正确的转换吗?

这也不能确保“19,1111”将是 19011L 或者它不会匹配“ss.SS”模式,我会得到一个例外。有了所有的 SimpleDateFormat,这可能会在工厂中成功解析为 20111L。我真的对此感到困惑......它应该像那样工作吗?

4

1 回答 1

1

它应该像那样工作,恐怕你必须自己解析这种格式。不过这应该不是那么难...

long millis = 0;
String[] numbers = dateString.split(".");
millis += Integer.parseInt(numbers[numbers.length-1]) * 
          (int)Math.pow(10,numbers[numbers.length-1].length()-3));
for (int i=2; i<=numbers.length; i++) {
  millis += Integer.parseInt(numbers[numbers.length-i]) *
            (int)Math.pow(60,i-1) * 100;
}

我没有对此进行测试,但它应该为您提供一个足够的起点。

于 2013-08-11T08:50:23.707 回答