【问题标题】:Convert String "Feb 18 2015 12:00:00:000AM" to LocalDateTime将字符串“Feb 18 2015 12:00:00:000AM”转换为 LocalDateTime
【发布时间】:2015-02-19 13:03:53
【问题描述】:

我从 mssql 数据库中得到一个字符串,表示这样的日期

2015 年 2 月 18 日上午 12:00:00:000

不,我试图通过使用将其转换为 LocalDateTime 对象,但没有运气

private static final DateTimeFormatter ZEITSTEMPEL_FORMAT = DateTimeFormatter.ofPattern("MMM dd yyyy HH:mm:ss:SSSa");    
LocalDateTime d = LocalDateTime.parse(getBENOETIGT_ZUM(),ZEITSTEMPEL_FORMAT);

原因:java.time.format.DateTimeParseException: Text 'Feb 18 2015 12:00:00:000AM' 无法解析:发现冲突:字段 AmPmOfDay 1 不同于从 12:00 得出的 AmPmOfDay 0

我错过了什么? 提前谢谢 英格

【问题讨论】:

  • 请编辑问题的标签,这与javafx-8无关。添加java-8datetime等标签。

标签: datetime java-8


【解决方案1】:

您的模式不正确。您正在使用 H: hour-of-day (0-23),但您需要使用 h:clock-hour-of-am-pm (1-12)。

所以正确的模式应该是:

DateTimeFormatter ZEITSTEMPEL_FORMAT = DateTimeFormatter.ofPattern("MMM dd yyyy hh:mm:ss:SSSa");

【讨论】:

  • 感谢快速响应,但通过使用这个我得到另一个箭头原因:java.time.format.DateTimeParseException:无法解析文本'Oct 21 2014 12:00:00:000AM'在索引 0
  • @Inge 我无法重现您在此处陈述的问题。我已经尝试过两个字符串并且它们正在工作。你确定你在字符串的开头没有空格吗?问题出在索引 0 有点奇怪。尝试使用 trim() 看看是否有帮助。
  • @Inge 您是否将语言环境设置为英语(希望如此)?
  • @Mneo Hochschild 那是我失踪的一个,但似乎数据库返回了一些带有额外空间的日期。例如。 2015 年 2 月 4 日 12:00:00:000AM(看到 2 月和 4 之间的两个空格?)所以在这种情况下,模式不起作用。有没有办法使用模式来解决这个问题?
  • @Inge 试试here中的技术。
猜你喜欢
  • 2021-03-30
  • 2015-11-05
  • 2022-01-10
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 2011-06-02
  • 1970-01-01
相关资源
最近更新 更多