Date与LocalDateTime应用详解

Date和LocaDateTime之间使用

一、Date使用

Date可读性差、易用性差、使用起来冗余繁琐。java.util.Date 是非线程安全的。java.util.Date 不支持国际化和时区、故大部分方法被声明为过时、不建议再使用。

  • date使用
构造方法 获取时间 设置时间 时间比较 格式转换
Date(): 创建一个表示当前时间的Date对象。Date(long date): 根据指定的毫秒数创建一个Date对象。 getTime(): 返回从1970年1月1日00:00:00以来的毫秒数。 setTime(long time): 设置Date对象的时间。 before(Date when): 判断当前日期是否在指定日期之前。after(Date when): 判断当前日期是否在指定日期之后。equals(Object obj): 判断两个日期是否相等。 toString(): 将日期对象转换为字符串。toLocaleString(): 将日期对象转换为本地化的字符串。
  • 格式化输出需要用到SimpleDateFormat这个类

y 年
M 年中的月份
w 年中的周数
W 月份中的周数
D 年中的天数
d 月份中的天数
F 月份中的星期
E 星期中的天数
a Am/pm 标记
H 一天中的小时数(0-23)
k 一天中的小时数(1-24)
K am/pm 中的小时数(0-11)
h am/pm 中的小时数(1-12)
m 小时中的分钟数
s 分钟中的秒数
S 毫秒数
z 时区

import java.text.SimpleDateFormat;
import java.util.Date;

public class datetest {
   
    
    
    public static void main(String[] args) {
   
    
    
        Date now = new Date();
        SimpleDateFormat sd=new SimpleDateFormat("现在时间: "+"yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒");
        System.out.println(sd.format(now));
        sd = new SimpleDateFormat("一年中的第 D 天,一个月中的第 F 个星期 ,一年中的第 w 个星期,一个月中的第 W 个星期");
        String str=sd.format(now);
        Date date=sd.parse(str);//抛异常,字符串转换为date类
        System.out.println(sd.format(now));
    }
}

二、LocalDateTime使用

Java8新增的日期类主要有三个,这些类使用了final来修饰,使得这些类是不可变的,一旦实例化,值就固定了,有点类似于String类。

  • LocalDate:表示日期(年月日)
  • LocalTime :表示时间(时分秒)
  • LocalDateTime:表示时间+ 日期 (年月日时分秒),是java8最常用的日期类

使用方法

  • 创建方法
LocalDate now1 = LocalDate.now();							// 当前日期 
LocalDate now2 = LocalDate.now(ZoneId.of("Asia/Shanghai"));	// 当前日期 (指定时区)
LocalDate now3 = LocalDate.now(Clock.systemDefaultZone());	// 当前日期 (指定时钟)
LocalDate localDate = LocalDate.of(2023, 1, 1);				// 指定日期 2023-01-01
  • 获取方法
LocalDate now = LocalDate.now();
int year = now.getYear(