有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java SimpleDataFormat字符串到日期转换

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

因此,我们可以期待“mm.ss.ss”、“ss.ss”、“ss.SSS”模式,并使用SimpleDataFormat的魔力:

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

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

此外,这并不能确保“191111”将是19011L,或者它将不匹配“ss.ss”模式,我将得到一个异常。使用所有SimpleDataFormat,这将在mills中成功解析为20111L。我真的很困惑。。。它应该是这样工作的吗


共 (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;
    }
    

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