首页 > 解决方案 > Android 为什么以所需格式解析日期时间大约需要 50-60 毫秒?

问题描述

我正在尝试使用以下代码以所需格式解析日期时间

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

但问题是第一次解析大约在35ms 左右,之后格式化大约在15 ms.

但平均而言,如果我试图解析50, 40, 30, 20, 10日期,那么它会占用900, 750, 600, 450, 200 ms相应的时间,这也远远高于它应该占用的时间。

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

有没有比目前的方法更快的方法?

标签: androidparsingdatetime-format

解决方案


我尝试了很多事情,我认为我找到了更好的解决方案。是使用日期时间(JodaTime)和日期库。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

这就是为什么我认为测试 3 中的 JodaTime 和 Date 更好


推荐阅读