gpt4 book ai didi

java.text.ParseException : Unparseable date for "hh:mm a"

转载 作者:太空宇宙 更新时间:2023-11-04 11:17:23 29 4
gpt4 key购买 nike

我正在努力将 Android 中的日期从“hh:mm a”转换为“HH:mm”。虽然我在简单的 java 应用程序上没有收到任何错误,但在 android 上却收到了错误。这是代码:

String time = "02:00 PM";
String formattedTime = "";
SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm");
String parseFormats[] = new String[]{"HH:mm", "HHmm", "hh:mm a", "hh a"};

for (String parseFormat : parseFormats) {
SimpleDateFormat formatting = new SimpleDateFormat(parseFormat);
try {
Date date = formatting.parse(time);
formattedTime = displayFormat.format(date);
System.out.println(formattedTime);
} catch (ParseException e) {
System.out.println(parseFormat);
e.printStackTrace();
}
}

如果是 Java,我会得到预期的结果:

02:00
HHmm
java.text.ParseException: Unparseable date: "02:00 PM"
at java.text.DateFormat.parse(DateFormat.java:366)
at HelloWorld.main(HelloWorld.java:31)
14:00
hh a
java.text.ParseException: Unparseable date: "02:00 PM"
at java.text.DateFormat.parse(DateFormat.java:366)
at HelloWorld.main(HelloWorld.java:31)

在 Android 应用程序中,相同的代码也会返回“hh:mm a”异常:

I/System.out: hh:mm a
W/System.err: java.text.ParseException: Unparseable date: "02:00 PM"

导入是相同的:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

对于 Java 应用程序,“HH:mm”和“hh:mm a”成功。对于 Android,仅对“HH:mm”成功。

最佳答案

感谢@ArnaudDenoyelle 发现了这个问题。我检查了 SimpleDateFormat 类,发现 1 个值的构造函数调用 2 个使用默认区域设置的值:

public SimpleDateFormat(String pattern)
{
this(pattern, Locale.getDefault(Locale.Category.FORMAT));
}

AM/PM 对于我的国家/地区来说被视为错误,因为它使用 24 小时制。由于我的手机和简单的 java 应用程序返回不同的默认区域设置值,因此我得到了不同的结果。

虽然这不是一个解决方案,但我使用Locale.France来避免这个问题:

SimpleDateFormat formatting = new SimpleDateFormat(parseFormat, Locale.FRANCE);

关于java.text.ParseException : Unparseable date for "hh:mm a",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45306982/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com