如何在不使用 DateTimeFormatter 的情况下将字符串转换为 LocalDate [重复]

Posted

技术标签:

【中文标题】如何在不使用 DateTimeFormatter 的情况下将字符串转换为 LocalDate [重复]【英文标题】:How to convert String to LocalDate without using DateTimeFormatter [duplicate] 【发布时间】:2020-09-20 17:15:00 【问题描述】:

我在字符串“2020-06-02”中有一个日期

现在我必须将其转换为 LocalDate 但不使用 DateTimeFormatter。

有可能吗。

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    LocalDate inputAdDate = LocalDate.parse(adDate, formatter);

到目前为止,我的代码如下所示。但我不想使用 DateTimeFormatter,因为它不支持低于 26 的 API 级别。

【问题讨论】:

试试LocalDate.parse(adDate) @Sweeper java.lang.NoClassDefFoundError: 解析失败:Ljava/time/LocalDate; 单参数解析方法要求输入字符串为 ISO-8601 格式。而且我看到您的输入日期字符串格式相同。因此,您不需要传递格式化程序参数。 嗯,你确定你可以使用LocalDate,但不能使用DateTimeFormatter吗?这对我来说似乎很奇怪,因为这两个类同时添加到标准 Java 库中。 LocalDateDateTimeFormatter 都是在 API 级别 26 中作为 java.time(现代 Java 日期和时间 API)的一部分引入的。在级别 25 之前,您可以通过后端端口同时使用两者, ThreeTenABP(即 ABP for android backport)。 【参考方案1】:

试试这个。

String date = "2020-06-02";
LocalDate localDate = LocalDate.parse(date);

你需要导入这个包。

import java.time.LocalDate;

【讨论】:

【参考方案2】:

另外,你可以试试 java.text.SimpleDateFormat

String strDate = "20-03-2019";
SimpleDateFormat sdfDateDMY = new SimpleDateFormat("dd-MM-yyyy");
sdfDateDMY.parse(strDate);

【讨论】:

我建议不要这样做(即使它可以在 API 级别 26 下工作)。 OP 正在寻求使用来自现代 Java 日期和时间 API 的 java.time 中的LocalDate。 (1) SimpleDateFormat 不能与 LocalDate 一起使用。 (2) SimpleDateFormat 出了名的麻烦和过时。 我不知道LocalDate 不适用于SimpleDateFormat。很高兴知道。谢谢

以上是关于如何在不使用 DateTimeFormatter 的情况下将字符串转换为 LocalDate [重复]的主要内容,如果未能解决你的问题,请参考以下文章

DateTimeFormatter 的操作与使用 -- 通俗易懂

请别再使用 SimpleDateFormat 格式化时间了,DateTimeFormatter 更出色!

请别再使用 SimpleDateFormat 格式化时间了,DateTimeFormatter 更出色!

在 1 月首次使用 DateTimeFormatter 会导致年份值无效

Spark 和不可序列化的 DateTimeFormatter

Java 8+ 中的 DateTimeFormatter.ISO_LOCAL_DATE 与 DateTimeFormatter.ofPattern("yyyy-MM-dd")