为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串转换为 LocalDate

将字符串转换为 LocalDate

慕沐林林 2022-05-25 16:32:07
我想转换21022019为2019-02-21,但由于某种原因我无法转换。import org.joda.time.LocalDate;import org.joda.time.LocalDateTime;import org.joda.time.format.DateTimeFormat;public class StringToLocalDate {    public static void main(String[] args) {        System.out.println(convert("21022019"));    }    static LocalDate convert(String date) {        LocalDateTime ldt;        ldt = LocalDateTime.parse(date, DateTimeFormat.forPattern("YYYY-MM-dd"));        return LocalDateTime.now().toLocalDate();    }} 
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

如果您使用的是 Java 8,则可以使用由创建 Joda time 的同一个人 (Stephen Colebourne) 开发的本机 Java Time 库。以各种格式解析和显示日期非常容易。


您的主要问题似乎是您将预期对象视为 a LocalDateTime,但没有时间存在。这本质上是通过运行时错误抛出您的代码,该错误指出您需要包含时间,因此您应该使用 aLocalDate代替。


import java.time.LocalDate;

import java.time.format.DateTimeFormatter;


public class StringToLocalDate {

    public static String DATE_FORMAT_INPUT = "ddMMyyyy";

    public static String DATE_FORMAT_OUTPUT = "yyyy-MM-dd";


    public static void main(String[] args) {

        System.out.println(formatted(convert("21022019")));

    }


    public static String formatted(LocalDate date) {

        return date.format(DateTimeFormatter.ofPattern(DATE_FORMAT_OUTPUT));

    }


    public static LocalDate convert(String dateStr) {

        return LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(DATE_FORMAT_INPUT));

    }

}

如果需要使用 1.8 之前的 Java 版本,可以使用以下。它非常相似。


import org.joda.time.LocalDate;

import org.joda.time.format.DateTimeFormat;


public class StringToLocalDate {

    public static String DATE_FORMAT_INPUT = "ddMMyyyy";

    public static String DATE_FORMAT_OUTPUT = "yyyy-MM-dd";


    public static void main(String[] args) {

        System.out.println(formatted(convert("21022019")));

    }


    public static String formatted(LocalDate date) {

        return date.toString(DateTimeFormat.forPattern(DATE_FORMAT_OUTPUT));

    }


    public static LocalDate convert(String dateStr) {

        return LocalDate.parse(dateStr, DateTimeFormat.forPattern(DATE_FORMAT_INPUT));

    }

}


查看完整回答
反对 回复 2022-05-25
?
四季花海

TA贡献1811条经验 获得超5个赞

您应该使用另一种模式来解析输入日期


   public static void main(String[] args) {


        System.out.println(convert("21022019"));

    }


    static LocalDate convert(String date) {

        return LocalDate.parse(date, DateTimeFormat.forPattern("ddMMyyyy"));

    }


查看完整回答
反对 回复 2022-05-25
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

好像21022019是2019年2月21号,试试:

return LocalDate.parse(date, DateTimeFormat.forPattern("ddMMyyyy"))


查看完整回答
反对 回复 2022-05-25
  • 3 回答
  • 0 关注
  • 1173 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号