java - LocalDateTime.parse() 格式没有小时、分钟等
问题描述
我想将日期时间字符串解析为 LocalDateTime。输入格式可能不包含小时、分钟等字段。例如,它可以是“yyyy M d”。鉴于此模式,您可以将字符串解析为 LocalDate,但不能解析为 LocalDateTime。我想创建 LocalDateTime。
有一种方法可以使用 DateTimeFormatterBuilder 执行此操作,如下所示。
// this code works. But I don't want to use DateTimeFormatterBuilder
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy")
.appendLiteral('-')
.appendValue(MONTH_OF_YEAR)
.appendLiteral('-')
.appendValue(DAY_OF_MONTH)
.parseDefaulting(HOUR_OF_DAY, 12)
.parseDefaulting(MINUTE_OF_HOUR, 13)
.parseDefaulting(SECOND_OF_MINUTE, 14)
.toFormatter();
System.out.println(LocalDateTime.parse("2015-09-05", formatter));
但我想使用 DateTimeFormatter.ofPattern() 而不是 DateTimeFormatterBuilder。但我不知道如何使下面的代码工作:
// this code doesn't work.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d");
System.out.println(LocalDateTime.parse("2015-09-05", formatter));
它抛出异常
Exception in thread "main" java.time.format.DateTimeParseException: Text '2015-09-05' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 2015-09-05 of type java.time.format.Parsed
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1920)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1855)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
...
解决方案
推荐阅读
- python - “截断”通过 CloudFormation (SAM) 创建的 DynamoDB 表
- javascript - 当我向下滚动网站页面时,如何更新进度条?
- php - 从客户端连接到 Docker 容器网络
- google-cloud-platform - 如何利用多个 Google Cloud TPU 训练单个模型
- android - rxjava 输出的排列不是唯一的
- fortran - 使用 fortran 从 .dat 文件中提取值,使用行和特定变量
- android - 以编程方式更改 PreferenceActivity 中的所有视图文本颜色
- django - 在视图中覆盖 settings.py 电子邮件设置
- python - 为什么控制台在 django 中显示模板未定义错误
- java - 如何对 SSO 进行身份验证并重定向到外部应用程序?