比较常用的日期类,
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr=df.format(now);
System.out.println("Current time: " + now);
}
}
date类的使用比较简单,但在使用过程中会出现可变性、线程安全性等不足。
import java.time.LocalDate;
public class LocalDateExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
System.out.println("Today's date: " + today);
}
}
LocalDate 类提供了一系列方法用于获取、设置和操作日期。例如,我们可以使用 getYear()、getMonthValue() 和 getDayOfMonth() 分别获取年份、月份和日期。此外,还可以使用 plusDays()、minusMonths() 等方法进行日期的加减运算。
?
//用localDate获取当前是今年第几周
LocalDate localDateDay =LocalDate.now();
int ByLocalDateTime = localDateDay.get(WeekFields.ISO.weekOfYear())
System.out.println("第几周ByLocalDateTime="+ByLocalDateTime);
1.DateTimeFormatter和SimpleDateFormat
简介:
DateTimeFormatter 和 SimpleDateFormat 都是用于格式化日期和时间的类,但是它们有一些区别。
SimpleDateFormat 是 Java 早期版本中提供的日期格式化类,他是线程不安全的。由于 SimpleDateFormat 是线程不安全的,所以如果在多线程环境中使用会出现异常,通常的解决方法要么是每个线程独立维护一份 SimpleDateFormat 对象实例,要么是将 SimpleDateFormat 放到 ThreadLocal 中。
在Java 8中新增了DateTimeFormatter 类,它比 SimpleDateFormat 更加灵活和安全。DateTimeFormatter 是不变对象,且是线程安全的。所以在使用 DateTimeFormatter 的时候,可以以静态成员变量的方式,在一个类中只维护一份对象实例,用于格式化多个日期和时间值,而无需担心线程安全问题。
?
区别: