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));
}
}

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"));
}

TA貢獻1887條經驗 獲得超5個贊
好像21022019
是2019年2月21號,試試:
return LocalDate.parse(date, DateTimeFormat.forPattern("ddMMyyyy"))
添加回答
舉報