代码之家  ›  专栏  ›  技术社区  ›  Sudhanshu Gaur

Android为什么要用50-60毫秒的时间来解析所需格式的Datetime呢?

  •  2
  • Sudhanshu Gaur  · 技术社区  · 6 年前

    我试图用下面的代码以所需的格式解析一个日期时间

    date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(data);
    formattedDate = new SimpleDateFormat("dd MMM''yy, HH:mm aa").format(date);
    

    但问题是,解析第一次走近了 35 在那之后,格式化就要开始了 15 ms

    但平均来说,如果我试图解析 50, 40, 30, 20, 10 900, 750, 600, 450, 200 ms resp,这也几乎高于它应该采取的。

    谁能告诉我为什么要花这么多时间?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Crammeur    6 年前

    我尝试了很多事情,我想我找到了更好的解决方案。是使用DateTime(JodaTime)和datelibrairy。JodaTime解析文本,Date转换为文本。

    这是我的代码和我的尝试。

    @Test
    public void DateTime() throws ParseException {
        DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
        long start = System.currentTimeMillis();
        DateTime dt = formatter.parseDateTime("2018-07-22 00:00:00");
        String formattedDate = dt.toString("dd MMM''yy, HH:mm aa");
        System.out.println(System.currentTimeMillis() - start);
        System.out.println(formattedDate);
    
        start = System.currentTimeMillis();
        Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2018-07-22 00:00:00");
        formattedDate = new SimpleDateFormat("dd MMM''yy, HH:mm aa").format(date);
        System.out.println(System.currentTimeMillis() - start);
        System.out.println(formattedDate);
    
        start = System.currentTimeMillis();
        date = formatter.parseDateTime("2018-07-22 00:00:00").toDate();
        formattedDate = new SimpleDateFormat("dd MMM''yy, HH:mm aa").format(date);
        System.out.println(System.currentTimeMillis() - start);
        System.out.println(formattedDate);
    }
    

    系统输出:

    545
    22 Jul'18, 00:00 AM
    16
    22 juil.'18, 00:00 AM
    0
    22 juil.'18, 00:00 AM
    
    Process finished with exit code 0