在使用DateTimeFormatter解析字符串到LocalDateTime时报错:Unable to obtain LocalDateTime from TemporalAccessor
解决方法:
1.将LocalDateTime改为 LocalTime
2.将解析模板补充完整
错误代码段:
String dateStr = "1999年07月11日";
//建立解析模板
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
//利用模板解析日期
LocalDateTime date = LocalDateTime.parse(dateStr, dtf);
方法一:
String dateStr = "1999年07月11日";
//建立解析模板
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
//利用模板解析日期
LocalDate date = LocalDate.parse(dateStr, dtf);//将LocalTimeDate改为LocalDate
方法二:
String dateStr = "1999年07月11日10:23 上午";//添加详细时间
//建立解析模板
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日hh:mm a");//补全解析模板
//利用模板解析日期
LocalDateTime date = LocalDateTime.parse(dateStr, dtf);
解析+格式化:
import javax.swing.text.DateFormatter;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
import java.util.Date;
public class Dateformatter {
public static void main(String[] args) {
//解析日期
//待解析日期
String dateStr = "1999年07月11日10:23 上午";
//建立解析模板
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日hh:mm a");
//利用模板解析日期
LocalDateTime date = LocalDateTime.parse(dateStr, dtf);
//格式化日期
//通过取得当前时间来实例化一个LocalDateTime对象
LocalDateTime now = LocalDateTime.now();
//建立格式化模板
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy年MM月dd日hh:mm a");
//格式化字符串
String nowStr = now.format(format);
System.out.println(nowStr);
}
}