java - LocalDate 的特殊字符串

标签 java date localdate

我想从以下字符串中获取 LocalDate 或 LocalDateTime。

2019 年 1 月 1 日凌晨 12:00:00

我已经尝试过以下代码,但出现以下错误:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM d, yyyy hh:mm:ss a"); // also with dd
formatter = formatter.withLocale(Locale.GERMAN);
LocalDateTime localDateTime = LocalDateTime.parse(stringDate, formatter);
LocalDate localDate = LocalDate.parse(stringDate, formatter);
  • 线程“main”中的异常 java.time.format.DateTimeParseException:无法在索引 0 处解析文本“2019 年 1 月 1 日 12:00:00 AM”

最后,我希望有日期的方式是

  • 2019 年 1 月 1 日。本地日期
  • 2019 年 1 月 1 日。 12:00 LocalDateTime(24 小时)

这可能吗?相反,使用正则表达式是否会矫枉过正?

最佳答案

你的代码有一些问题,但我会在这里提出一个可行的解决方案:

  1. HH 是一天中的小时,而不是小时 0-12(即 hh)
  2. 你应该使用 DateTimeFormatterBuilder
  3. 您应该使用正确的语言环境,可能是 GERMANY 而不是 GERMAN
  4. 月份名称表示为L,而不是M
  5. 德语语言环境使用 vorm.nachm. 而不是 AMPM -> 快速解决方案是替换条款

把它们放在一起给我们留下了这个:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Locale;

class Scratch {

    public static void main(String[] args) {
        String stringDate = "Jan 1, 2019 11:00:00 PM";
        stringDate = stringDate.replace("AM", "vorm.");
        stringDate = stringDate.replace("PM", "nachm.");
        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                .appendPattern("LLL d, yyyy hh:mm:ss a")
                .toFormatter(Locale.GERMANY);
        LocalDateTime localDateTime = LocalDateTime.parse(stringDate, formatter);
        LocalDate localDate = LocalDate.parse(stringDate, formatter);
    }

}

如果有人有不同的方法来处理 AM/vorm.-困境,我将很高兴看到它!

关于java - LocalDate 的特殊字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432823/

相关文章:

使用 c 中的 mktime() 检查字符串是否为日期

java - 找出由两个 Long epoch 值表示的两个日期之间的差异

java - 在 Hibernate 5.1 中使用 java.time

Java LocalDate - 保存在 MongoDB 中时,时间会附加到日期上吗?

java - 使用 SXSSF 写入大 Excel 文件时出现内存不足异常

java - 原始数组和引用数组有什么区别。

java - 在 JPA/Hibernate 中将 BIGINT 列用于 java.util.Date 或 java.time.Instant

java 日历格式

JavaScript:如何获取指定时区的日期时间

java - 提交分数排行榜 Google Play 时应用程序崩溃