Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为LocalDate_Java_Datetime_Jodatime_Joda Convert - Fatal编程技术网

Java 将字符串转换为LocalDate

Java 将字符串转换为LocalDate,java,datetime,jodatime,joda-convert,Java,Datetime,Jodatime,Joda Convert,我想将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.pr

我想将
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();
    }
} 

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

   public static void main(String[] args) {

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

    static LocalDate convert(String date) {
        return LocalDate.parse(date, DateTimeFormat.forPattern("ddMMyyyy"));
    }

似乎
21022019
是2019年2月21日,请尝试:

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

您可以使用SimpleDataFormat,如下所示:

import java.text.*;

...//your class

String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

String date = simpleDateFormat.format(new Date());
System.out.println(date);

参考资料:

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

您的主要问题似乎是将预期对象视为
LocalDateTime
,但没有时间。这实质上是让代码通过一个运行时错误,该错误指出需要包含时间,因此应该使用
LocalDate

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));
    }
}
100%工作代码

   LocalDate localDate = LocalDate.parse("Wed, 21 Jan 2021 10:24 AM", DateTimeFormatter.ofPattern("EE, d MMM yyyy hh:mm a"));

您需要告诉它如何解析您是否真的不想要回字符串,并且仅使用LocalDate在这两种格式之间进行转换?将字符串转换为LocalDate出现了什么问题?你得到了什么结果?如果你收到任何错误信息,请逐字引用,它会告诉我们很多。“寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中复制它所需的最短代码。没有明确问题说明的问题对其他读者没有用处”(引自)可能重复的问题(我知道这个问题是关于老式的
SimpleDateFormat
,但问题/bug非常相似)2019-01-28但我希望解析相同的日期而不是今天的日期。是的,@UdayKiran,这个答案中的代码就是这样的,解析而不是今天的日期。谢谢你的教程。请不要教年轻人使用过时且臭名昭著的
SimpleDateFormat
类。至少不要将其作为第一个选项。也不要将其作为第一个选项没有任何保留。尤其是当提问者已经在使用更现代、更高级的Joda-Time.Working时,但不是100%。仅在英语国家。