java Java8 DateTimeFormatter am/pm
我正试图解析一些日期,但DateTimeParser似乎不同意我对什么是有效的
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
import java.util.Locale
ZonedDateTime.parse("Wed Jul 16, 2016 4:38pm EDT", DateTimeFormatter.ofPattern("EEE MMM dd, yyyy hh:mma z", Locale.US))
当我尝试这个的时候,它说
java.time.format.DateTimeParseException: Text 'Wed Jul 16, 2016 4:38pm EDT' could not be parsed at index 17
那么时间有问题吗?当我扔掉其中一个“h”时,它会变得更远(虽然它应该只会让我的时间变短),但它不喜欢pm的东西
ZonedDateTime.parse("Wed Jul 16, 2016 4:38pm EDT", DateTimeFormatter.ofPattern("EEE MMM dd, yyyy h:mma z", Locale.US))
java.time.format.DateTimeParseException: Text 'Wed Jul 16, 2016 4:38pm EDT' could not be parsed at index 21
我不知道他到底有什么问题。当我尝试“hh:mmaa”作为一种模式时,它说它不喜欢两个a,现在我被卡住了,因为错误消息没有帮助
# 1 楼答案
请注意
AM
和PM
的情况取决于您的语言环境因此,如果您所在的地区是美国,则应使用大写字母,但如果您所在的地区是英国,则应使用小写字母
有关更多详细信息,请参阅:Localize the period (AM/PM) in a time stamp to another language
# 2 楼答案
a
需要大写的PM
或AM
。要获取不区分大小写的格式化程序,您需要手动构建它:请注意,由于7月16日不是星期三,因此将出现新的错误
# 3 楼答案
事实证明,该解决方案还解决了使用“MMM”解析混合案例月份(例如“Jul”)的问题