一、localdate转date的区别
在Java中,LocalDate和Date都是处理日期的类,但它们有一些关键的区别。Java8引删了LocalDate(用以替代Calendar),是不变类型且线程安全的类,可以被广泛用于应用程序中表示日期。而Date是可变类型的类,它是线程不安全的,因此在多线程环境下使用需要考虑其同步问题。因此,在使用LocalDate和Date之间进行比较时,应该注意它们之间的区别。
二、localdate转datetime
在Java中,LocalDate是只处理日期的类,例如:年,月,日,hour,minute和second属性都是缺失的。如果想要同时具有日期和时间的信息,就需要使用LocalDateTime,它同时包含日期和时间的信息。
LocalDate date = LocalDate.now();
LocalDateTime dateTime = date.atTime(LocalTime.now());
三、localdatetime转localdate
如果只需要获取LocalDateTime中的日期信息,可以采用LocalDate的from()和toLocalDate()方法将其转换。
LocalDateTime dateTime = LocalDateTime.now();
LocalDate date = LocalDate.from(dateTime);
or
LocalDate date = dateTime.toLocalDate();
四、LocalDate转Date 1900年误差
由于Java Date类的构造函数中使用的年份是从1900年作为基准的,而LocalDate的年份是直接使用的,因此在将LocalDate转化为Date时,可能存在误差。
LocalDate localDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
五、Date转LocalDate
Java中,可以通过将Date转换为Instant,然后利用Instant对象调用atZone(),从而获取对应的ZoneId,最后通过调用toLocalDate()方法,将Date转换为LocalDate。
Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
六、String转LocalDate
在Java中,我们可以使用DateTimeFormatter类将String类型的日期格式化为LocalDate。
String strDate = "2022-11-11";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(strDate, formatter);
七、LocalDate转化为Date
在Java中,我们可以使用Instant对象调用atZone()方法获取对应的ZoneId,最后通过调用Date.from()方法将LocalDate转换为Date。
LocalDate localDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
八、LocalDateTime转Date
我们可以采用同样的方法将LocalDateTime转换为Date类型。
LocalDateTime localDateTime = LocalDateTime.now();
Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
九、LocalDate获取时间戳
Java中,LocalDate并没有时间戳的概念,所以获取时间戳需要将其转换为LocalDateTime或者Instant,在获取对应的时间戳。
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = localDate.atStartOfDay();
long timestamp1 = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
long timestamp2 = localDate.atStartOfDay(ZoneId.systemDefault()).toEpochSecond();
十、Date设置时间格式
在Java中,Date有一个toLocalDate()方法,该方法可以返回LocalDate类型,从而可以使用LocalDate的DateTimeFormatter进行格式化。
Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
String strDate = localDate.format(formatter);