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文档中的一个关键句子-我应该把它叫做一天。
首先,三个字符的月份用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"));
结果(我是GMT-4,没有夏令时):
2010年3月30日星期二17:27:40 BOT
另请参见java.text.SimpleDateFormat
javadoc。
为什么您称它为java.text.SimpleDateFormat
不在我身旁,所以我将其重命名为pdf
;)
MM代表数字月份。使用MMM。
我提供了现代的答案。其他答案是正确的,但是众所周知,您使用的sdf
类麻烦且久已过时。相反,我使用的是java.time,这是现代的高级Java日期和时间API。
SimpleDateFormat
输出:
2010-03-30T17:27:40.140
Link: 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);
解释如何使用java.time。