Android为什么以所需的格式解析Datetime大约需要50-60毫秒?

时间:2018-07-22 22:19:38

标签: android parsing datetime-format

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

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,这也远远超出了应有的水平。

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

是否有其他方法可以比当前方法更快?

1 个答案:

答案 0 :(得分:0)

我尝试了很多事情,并且我认为我的解决方案是更好的性能。是使用DateTime(JodaTime)和Date librairy。 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);
}

System.out:

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更好