android - 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);
但问题是第一次解析大约在35
ms 左右,之后格式化大约在15 ms
.
但平均而言,如果我试图解析50, 40, 30, 20, 10
日期,那么它会占用900, 750, 600, 450, 200 ms
相应的时间,这也远远高于它应该占用的时间。
谁能告诉我为什么要花这么多时间?
有没有比目前的方法更快的方法?
解决方案
我尝试了很多事情,我认为我找到了更好的解决方案。是使用日期时间(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 更好
推荐阅读
- jquery - 如何使用 AJAX 和 php 从 HTML 提交表单
- c - 我可以使用动态内存分配来减小 int 数组的大小然后重新分配内存吗?
- javascript - 没有找到 javascript 函数的编辑器
- php - Codeception 进入另一个目录
- r - 如何在 for 循环内的名称-值对中指定名称?
- r - R中的时间和日期问题
- php - 静态变量设置为空,然后使用 if 语句检查该变量是否为空
- android - 如何在 Go 和 Android 之间使用 RSA
- delphi - 如何在一条指令中创建具有已定义元素的字符串数组?
- reactjs - 取一个字符串但需要反应组件