SimpleDateFormat:
SimpleDateFormat pdf = new SimpleDateFormat("MM dd yyyy hh:mm:ss:SSSaa");
pdf.parse("Mar 30 2010 5:27:40:140PM");
抛出的异常:
java.text.ParseException: Unparseable date: "Mar 30 2010 5:27:40:140PM"
有什么想法吗?
修改:感谢快速解答。你们都是对的,我只是错过了SimpleDateFormat文档中的一个关键句子 - 我应该把它称为一天。
答案 0 :(得分:11)
首先,三个字符的月份由MMM
表示。其次,一个两位数小时由h
表示。第三,Mar
似乎是英语,您需要提供Locale.ENGLISH
,否则它将无法在具有不同默认语言环境的计算机中正常运行。
以下作品:
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy h:mm:ss:SSSa", Locale.ENGLISH);
System.out.println(sdf.parse("Mar 30 2010 5:27:40:140PM"));
结果(我在格林尼治标准时间4点没有DST):
Tue Mar 30 17:27:40 BOT 2010
另见java.text.SimpleDateFormat
javadoc。
为什么你叫它pdf
超出我的范围,所以我将其重命名为sdf
;)
答案 1 :(得分:8)
答案 2 :(得分:6)
MM代表数字月份。使用MMM。
答案 3 :(得分:0)
我正在提供现代答案。其他答案是正确的,但是众所周知,您使用的SimpleDateFormat
类很麻烦,而且已经过时了。取而代之的是,我使用的是Java.time,这是一种现代而高级的Java日期和时间API。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"MMM d uuuu h:mm:ss:SSSa", Locale.ROOT);
String dateTimeString = "Mar 30 2010 5:27:40:140PM";
LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
System.out.println(dateTime);
输出:
2010-03-30T17:27:40.140
链接: Oracle tutorial: Date Time解释了如何使用java.time。