Java8 DateTimeFormatter 上午/下午

标签 java java-8 java-time

我正在尝试解析一些日期,但 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' 时,它会变得更远(虽然它应该只是 0-pad 我的时间),但它不喜欢 pm-stuff

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,现在我卡住了,因为错误消息没有帮助。

最佳答案

a 需要大写的 PMAM。要获得不区分大小写的格式化程序,您需要手动构建它:

DateTimeFormatter fmt = new DateTimeFormatterBuilder()
        .parseCaseInsensitive()
        .appendPattern("EEE MMM dd, yyyy h:mma z")
        .toFormatter(Locale.US);

请注意,您会收到一个新错误,因为 7 月 16 日不是星期三。

关于Java8 DateTimeFormatter 上午/下午,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38250379/

相关文章:

java - 将带有偏移字符串的日期时间解析为 LocalDateTime

用于生成 Java 源代码的 Java/Scala 库

Java 8 方法引用未处理的异常

java - 将 UTC 纪元时间转换为另一个时区的纪元时间

java - Vararg 谓词与 Java 8 流

java - 需要 Java 8 中的非预期公历年表(如 org.joda.time.chrono.GJChronology)

Java:使用 java.time 将 object.toString 解析为 LocalDate 时遇到问题

java - For循环不打印用户输入

java - 使用 RichFaces 下载文件

java - Mms-computing.co.uk twain 库文档