java.text.ParseException:无法解析的日期:“2016-02-01 10:00pm”(在偏移量 16 处)
java.text.ParseException: Unparseable date: "2016-02-01 10:00pm" (at offset 16)
我想将时间格式从 12 小时更改为 24 小时。
我有一个这样的日期字符串
String date = "2016-02-01";
String time = "10:00pm";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mmaa");
DateFormat outputformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date daaateee = null;
String output = null;
try{
String ddd =date + " " + time;
daaateee= df.parse(ddd);
output = outputformat.format(daaateee);
System.out.println(output);
}catch(ParseException pe){
pe.printStackTrace();
}
我正在尝试这样更改,但它显示错误:
System.err: java.text.ParseException: Unparseable date: "2016-02-01 10:00pm" (at offset 16)
此代码适用于所有 devices.but 不适用于具有棉花糖 os 的 Moto g3。有什么理由不在棉花糖设备中转换吗?
帮我把时间格式12H转换成24H。
提前致谢
我怀疑问题 可能 是因为您没有指定语言环境 - 所以它使用的是您的系统语言环境,它可能有不同的 am/pm 说明符。这是一个在桌面上对我有用的例子 Java:
import java.util.*;
import java.text.*;
class Test {
public static void main(String[] args) throws Exception {
String date = "2016-02-01";
String time = "10:00pm";
TimeZone utc = TimeZone.getTimeZone("Etc/UTC");
DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mmaa", Locale.US);
inputFormat.setTimeZone(utc);
Date parsed = inputFormat.parse(date + " " +time);
DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
outputFormat.setTimeZone(utc);
System.out.println(outputFormat.format(parsed));
}
}
请注意,我还将时区指定为 UTC,以避免夏令时更改出现任何问题(其中 date/time 组合可能不明确或根本不存在)。
如果在 Android 下仍然对您不起作用,请尝试使用 "yyyy-MM-dd hh:mmaa"
而不是 "yyyy-MM-dd hh:mma"
- 尽管我仍然 期望 [=21] =] 前一种模式起作用。不过,指定时区和语言环境绝对值得。
支持am/pm的日期格式需要是'a'而不是'aa',
所以你基本上需要做 DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mma");
我想将时间格式从 12 小时更改为 24 小时。
我有一个这样的日期字符串
String date = "2016-02-01";
String time = "10:00pm";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mmaa");
DateFormat outputformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date daaateee = null;
String output = null;
try{
String ddd =date + " " + time;
daaateee= df.parse(ddd);
output = outputformat.format(daaateee);
System.out.println(output);
}catch(ParseException pe){
pe.printStackTrace();
}
我正在尝试这样更改,但它显示错误:
System.err: java.text.ParseException: Unparseable date: "2016-02-01 10:00pm" (at offset 16)
此代码适用于所有 devices.but 不适用于具有棉花糖 os 的 Moto g3。有什么理由不在棉花糖设备中转换吗?
帮我把时间格式12H转换成24H。 提前致谢
我怀疑问题 可能 是因为您没有指定语言环境 - 所以它使用的是您的系统语言环境,它可能有不同的 am/pm 说明符。这是一个在桌面上对我有用的例子 Java:
import java.util.*;
import java.text.*;
class Test {
public static void main(String[] args) throws Exception {
String date = "2016-02-01";
String time = "10:00pm";
TimeZone utc = TimeZone.getTimeZone("Etc/UTC");
DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mmaa", Locale.US);
inputFormat.setTimeZone(utc);
Date parsed = inputFormat.parse(date + " " +time);
DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
outputFormat.setTimeZone(utc);
System.out.println(outputFormat.format(parsed));
}
}
请注意,我还将时区指定为 UTC,以避免夏令时更改出现任何问题(其中 date/time 组合可能不明确或根本不存在)。
如果在 Android 下仍然对您不起作用,请尝试使用 "yyyy-MM-dd hh:mmaa"
而不是 "yyyy-MM-dd hh:mma"
- 尽管我仍然 期望 [=21] =] 前一种模式起作用。不过,指定时区和语言环境绝对值得。
支持am/pm的日期格式需要是'a'而不是'aa',
所以你基本上需要做 DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mma");