将字符串转换为 LocalDate
Convert String to LocalDate
我想将 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"))
您可以像下面这样使用 SimpleDateFormat:
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);
参考:http://tutorials.jenkov.com/java-internationalization/simpledateformat.html
如果您使用的是 Java 8,则可以使用由创建 Joda 时间的同一个人 (Stephen Colebourne) 开发的本机 Java 时间库。以各种格式解析和显示日期非常容易。
您的主要问题似乎是您将预期对象视为 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"));
我想将 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"))
您可以像下面这样使用 SimpleDateFormat:
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);
参考:http://tutorials.jenkov.com/java-internationalization/simpledateformat.html
如果您使用的是 Java 8,则可以使用由创建 Joda 时间的同一个人 (Stephen Colebourne) 开发的本机 Java 时间库。以各种格式解析和显示日期非常容易。
您的主要问题似乎是您将预期对象视为 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"));