时间:2023-01-13 11:03:52 | 栏目:JAVA代码 | 点击:次
String类和LocalDateTime类的相互转换,这种类型之间的相互转换
记住三点就行:
//1.具有转换功能的对象 DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); //2.要转换的对象 LocalDateTime time = LocalDateTime.now(); //3.发动功能 String localTime = df.format(time); System.out.println("LocalDateTime转成String类型的时间:"+localTime); //3.LocalDate发动,将字符串转换成 df格式的LocalDateTime对象,的功能 LocalDateTime LocalTime = LocalDateTime.parse(strLocalTime,df) System.out.println("String类型的时间转成LocalDateTime:"+LocalTime);
DateTimeFormatter struct = DateTimeFormatter.ofPattern("yyyy-MM-dd") LocalDate localDate = LocalDate.now(); String format = struct.format(localDate) System.out.println("LocalDate转成String类型的时间:"+format) LocalDate parse = LocalDate.parse(format System.out.println("String类型的时间转成LocalDateTime:"+parse);
结果:
LocalDateTime转成String类型的时间:2020-11-09 18:32:48
String类型的时间转成LocalDateTime:2020-11-09T18:32:48
LocalDate转成String类型的时间: 2020-11-09
String类型的时间转成LocalDateTime:2020-11-09
LocalDateTime now = LocalDateTime.now(); final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd w hh:mm:ss"); final String format = now.format(dateTimeFormatter); System.out.println(format); final LocalDateTime parse = LocalDateTime.parse(format, dateTimeFormatter);
运行会出现
java.time.DateTimeException: Unable to obtain LocalTime from TemporalAccessor: {MilliOfSecond=0, NanoOfSecond=0, HourOfAmPm=9, MicroOfSecond=0, SecondOfMinute=57, MinuteOfHour=34},ISO resolved to 2020-04-13 of type java.time.format.Parsed
原因是因为时间格式中的小时 hh 采用12小时,反解析时不知道上午还是下午,改成 "yyyy-MM-dd w hh:mm:ss a"或者采用24小时制“yyyy-MM-dd w HH:mm:ss”
tips:年用YYYY格式也会出现异常