英文:
Why I get a wrong result when parsing a date from string with SimpleDateFormat ? (Java)
问题
我试图从字符串中解析日期,但是得到了错误的日期结果,而且不明白为什么会这样:/
String dateStr = "September 6, 2013 - 10:48";
SimpleDateFormat parser = new SimpleDateFormat("MMMM dd, YYYY - HH:mm", Locale.US);
Date date = parser.parse(dateStr);
当我查看日期结果(在调试器中),我看到的是:2012年12月30日 星期日 10:48:00 CET
有人能告诉我我哪里做错了吗?
英文:
I'm trying to parse a date from string but i get a wrong date result and dont understand why :/
String dateStr = "September 6, 2013 - 10:48";
SimpleDateFormat parser = new SimpleDateFormat("MMMM dd, YYYY - HH:mm", Locale.US);
Date date = parser.parse(dateStr);
When I look date result (in debugger) i see : Sun Dec 30 10:48:00 CET 2012
Can someone tell me where I'm wrong please ?
答案1
得分: 3
String dateStr = "September 6, 2013 - 10:48";
SimpleDateFormat parser = new SimpleDateFormat("MMMM dd, yyyy - hh:mm", Locale.US);
Date date = parser.parse(dateStr);
System.out.println(date);
请使用 yyyy 而不是 YYYY。
还请不要使用 Date,而是使用 LocalDate
和 LocalDateTime
。
以下是使用 LocalDateTime
的示例代码:
String dateStr = "September 6, 2013 - 10:48";
DateTimeFormatter format = DateTimeFormatter.ofPattern("MMMM d, y - HH:mm", Locale.US);
LocalDateTime date = LocalDateTime.parse(dateStr, format);
System.out.println(date.format(format));
请注意,HH
表示 24 小时制时间,因为您的日期字符串中没有包含 AM 或 PM。
英文:
String dateStr = "September 6, 2013 - 10:48";
SimpleDateFormat parser = new SimpleDateFormat(
"MMMM dd, yyyy - hh:mm", Locale.US);
Date date = parser.parse(dateStr);
System.out.println(date);
Use yyyy and not YYYY
Also don't use Date but use LocalDate
and LocalDateTime
.
Here is how you would do it using LocalDateTime
String dateStr = "September 6, 2013 - 10:48";
DateTimeFormatter format = DateTimeFormatter.ofPattern(
"MMMM d, y - HH:mm",Locale.US);
LocalDateTime date = LocalDateTime.parse(dateStr,format);
System.out.println(date.format(format));
Note the HH
is for 24 hour time since you didn't include an AM or PM in your date string.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论