我正在努力将日期从“hh:mm a”转换为android中的“HH:mm”。虽然我没有在简单的Java应用程序上得到任何错误,但我在android上遇到错误。这是代码:
if(driver.findElements(By.xpath("//section[@class='hp_news']/following::div[@class='AdUnit']")))
{
System.out.println("div is present");
}
else
{
System.out.println("div is not present");
}
如果是Java,我会得到预期的结果:
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();
}
}
在android应用程序中,相同的代码也返回“hh:mm a”的异常:
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)
进口是相同的:
I/System.out: hh:mm a
W/System.err: java.text.ParseException: Unparseable date: "02:00 PM"
对于Java应用程序,它成功为“HH:mm”和“hh:mm a”。对于Android,它只能成功“HH:mm”。
答案 0 :(得分:0)
感谢@ArnaudDenoyelle发现问题。我检查了SimpleDateFormat类,结果发现了1个值为defaul Locale的值的构造函数调用:
public SimpleDateFormat(String pattern)
{
this(pattern, Locale.getDefault(Locale.Category.FORMAT));
}
AM/PM
被视为我国的错误,因为它使用24小时制。由于我的手机和简单的java应用程序返回不同的默认Locale值,我得到了不同的结果。
虽然它不是解决方案,但我使用Locale.France
来避免此问题:
SimpleDateFormat formatting = new SimpleDateFormat(parseFormat, Locale.FRANCE);