- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 DateTimeFormatter 仅解析 LocalTime 变量的“一天中的时间”时遇到问题。尝试了几种不同的格式,但没有看到我遗漏的内容(因为我正在使用 DateTimeFormatter 我在想我需要一个日期组件,但我只将它与 LocalDate 一起使用没问题并且文档说它支持 LocalTime)。
预先感谢您提供任何帮助/链接来识别导致异常的我的错误。
与此 SSCCE 一起复制:
import java.awt.*;
import java.time.*;
import java.time.format.*;
public class SSCCE {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable(){
@Override
public void run() {
String word = "";
word = "1200am";
// System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ISO_LOCAL_TIME).toString());
System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("hhmma")).toString());
// System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("hmma")).toString());
// System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("HHmma")).toString());
// System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("Hmma")).toString());
// System.out.println(LocalTime.parse((CharSequence)word.toLowerCase(), DateTimeFormatter.ofPattern("hhma")).toString());
word = "8PM";
System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ISO_LOCAL_TIME).toString());
}
});
}
}
...我得到了这个堆栈跟踪:
Exception in thread "AWT-EventQueue-0" java.time.format.DateTimeParseException: Text '1200am' could not be parsed at index 4 at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:194 7) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849) at java.time.LocalTime.parse(LocalTime.java:441) at SSCCE$1.run(SSCCE.java:14) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.ja va:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java :201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:11 6) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java :105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
最佳答案
您应该将其转换为大写而不是小写,因为 DateTimeFormatter
只会解析大写 AM
/PM
:
System.out.println(LocalTime.parse(word.toUpperCase(),
DateTimeFormatter.ofPattern("hhmma")).toString());
// will print 00:00
关于java - 尝试使用 DateTimeFormatter 解析时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216548/
我有以下字符串表示我需要解析的日期范围: 2018-10-20:2019-10-20 它由 2 个由 分隔的 ISO 日期字符串组成: 通过将重复的日期范围与其他文本混合在一起,字符串可能会变得更加复
我在使用新的 Java Date-API 时遇到问题,尤其是 java.time.DateTimeFormatter。 我正在寻找一种将 TimeZone-Offset 添加到给定时间的方法。 例如
在 Java 8 DateTime API 中,有两种格式化日期的方法,乍一看似乎做同样的事情: DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm").for
我使用 ZonedDateTime.now(ZoneOffset.of("+2:00")).minusDays(5) 创建了一个日期。现在我想将其格式化为 yyyy-MM-dd。 在 Java 8+
以下代码: Locale locale = new java.util.Locale("en", "AU"); DateTimeFormatter fmt = DateTimeFormatter.of
这个问题在这里已经有了答案: Error: Text '1/31/2020' could not be parsed at index 0 while trying to parse string d
我正在将我的应用程序从 Joda-Time 迁移到 Java 8 java.time . 我遇到的一件事是使用 DateTimeFormatter 中的模式打印基于周的年份. 注意:我看过这个问题:
这个问题已经有答案了: Why does Java's java.time.format.DateTimeFormatter#format(LocalDateTime) add a year? (2
我使用 DateTimeFormatter 来格式化日期。这是可行的,但是当我尝试将此格式化日期转换回日期时,我遇到了异常。 代码: DateTimeFormatter weekOfYear = Da
我正在尝试解析月份从 1 到 12(而不是从 01 到 12)的日期。 我正在尝试这个: System.out.println(DateTimeFormatter.ofPattern("[[M
我正在尝试使用 DateTimeFormatter API 在 TextView 中显示特定时间,但每当我运行我的应用程序时我的设备设置为阿拉伯语或孟加拉语,不知何故时间似乎总是显示西方数字。这是故意
这个问题已经有答案了: How to get start and end range from list of timestamps? (2 个回答) Converting ISO 8601-comp
我正在改造一些旧的 SimpleDateFormat 代码以使用新的 Java 8 DateTimeFormatter。 SimpleDateFormat 以及旧代码接受日期后面包含内容的字符串,例如
有没有办法拥有这样的 DateTimeFormatter DateTimeFormatter.ofPattern("HH:mm") 它应该转换为 LocalDateTime 并且将缺少的内容归零? 实
是否有与 DateTimeFormatter 的 .appendFraction 方法等效的模式?这就是我想要的,但不必包含 .appendFraction() 和周围的 .可选方法。 Date
这个问题已经有答案了: Why does Java's java.time.format.DateTimeFormatter#format(LocalDateTime) add a year? (2
我正在尝试使用 DateTimeFormatter 格式化当前日期,我几乎得到了我需要的东西,但我的问题似乎是一周中的几天是从星期日而不是星期一开始枚举的。因此,例如,如果我在星期二运行下面的代码 i
LocalDateTime API 可以通过在格式化程序中使用键“z”来添加时区名称。添加此 key 时出现异常,但不明白为什么。我正在寻找类似此示例“11:59:22 PM GMT”而不是“**..
我遇到了一个问题,我绝对无法解决这个问题。我对 Java(或任何语言,就此而言)没有经验,如果这是一个愚蠢的问题,请原谅。 据我所知,java.time.format.DateTimeFormatte
This question already has answers here: Why does Java's java.time.format.DateTimeFormatter#format(Lo
我是一名优秀的程序员,十分优秀!