Java日期类
- java.util.Date类封装当前的日期和时间 大部分方法都已经过时
第一代日期类Date
| 属性 | 说明 | 
|---|---|
| long getTime(); | 获取当前时间,时间戳 | 
| void setTime(long time); | 设置时间 | 
| boolean after(Date when) | 测试此日期是否晚于指定日期。 | 
| boolean before(Date when) | 测试此日期是否早于指定日期。 | 
public class DateTest2 {
    public static void main(String[] args) {
        //gettime 获取当前系统毫秒时间 (时间戳)
        Date d = new Date();
        System.out.println(d.getTime());
        //获取今天时间 此方法已过时
        System.out.println(d.toLocaleString());
        //获取昨天时间
        Date d2 = new Date(d.getTime()-(60*60*24*1000));
        System.out.println(d2.toLocaleString());
        //比较今天是否晚于昨天
        boolean after = d.after(d2);
        System.out.println(after);
        //比较今天是否早于昨天
        boolean before = d.before(d2);
        System.out.println(before);
        
    }
}SimpleDateFormat类
| 属性 | 说明 | 
|---|---|
| format | 将一个Date格式转化为日期/时间字符串,此方法继承的父类DateFormat的方法 | 
| parse | 从给定字符串的开始解析文本,以生成一个日期,此方法为继承的父类DateFormat的方法 | 
- java.text.DateFormat类是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间
public class DateTest3 {
    public static void main(String[] args) throws ParseException {
        //创建日期
        Date date = new Date();
        //对日期进行格式化
        //格式:yyyy-MM.dd HH:mm:ss SSS
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        System.out.println(sdf.format(date));
        //字符串转换为时间
        String str = "2001-10-17 10:17:15 888";
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date parse = sdf1.parse(str);
        System.out.println(parse);
        
    }
}第二代日期类Calendar
- Date类用于返回日期对象,不适合获取日历字段。设置和获取日历字段的方法,被JDK1.1推出的Calendar代替。
| 属性 | 说明 | 
|---|---|
| getInstance() | 使用默认时区和语言环境获得一个日历,也可以通过getInstance(TimeZone time,Locale loc)或指定时区和语言环境的日历 | 
| get(int field) | 获取指定日历字段 | 
| set(int year,int month,int date,int hourOfDay,int minute,int second) | 设置字段YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE和SECOND的值 | 
public class DateTest4 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        int Year = calendar.get(Calendar.YEAR);  //年
        int Month = calendar.get(Calendar.MONTH)+1; //1月从0开始 月
        int DayMonth = calendar.get(Calendar.DAY_OF_MONTH); //日
        int Hour = calendar.get((Calendar.HOUR)); //时
        int Minute = calendar.get(Calendar.MINUTE); //分
        int Second = calendar.get(Calendar.SECOND); //秒
        System.out.println(Year + "-" + Month + "-" + DayMonth + "\t" + Hour + ":" + Minute + ":" + Second); // 2023-3-4   5:36:52
    }
}public class DateTest5 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //获取今年的多少天
        int DayYear = calendar.get(Calendar.DAY_OF_YEAR); //63
        //获取这个月的多少天
        int DayMonth = calendar.get(Calendar.DAY_OF_MONTH); //4
        //获取这一周的第几天 自然周从周日开始默认是0
        int DayWeek = calendar.get(Calendar.DAY_OF_WEEK); //7
        
        System.out.println("今年已经过去了" + DayYear + "天 这个月已经过去了" + DayMonth + "天 这一周已经过去了" + DayWeek + "天");
    }
}第三代日期类
- JDK 1.0中包含了一个java.util.Date类
- JDK 1.1引入Calendar类之后被弃用了
- JDK1.8引用的java.time纠正了过去的缺陷
LocalDateTime类
| 属性 | 说明 | 
|---|---|
| LocalDate now() | 返回日期 | 
| int getYear() | 返回年份 | 
| int getMonthValue() | 返回月份 | 
| int getDayOfMonth() | 返回日期 | 
| int getHour() | 返回小时 | 
| int getMinute() | 返回分钟 | 
| int getSecond() | 返回秒 | 
public class DateTest6 {
    public static void main(String[] args)  {
        //获取日期
        LocalDateTime time = LocalDateTime.now();
        System.out.println(time); // 2023-03-04T20:13:42.175
        //年
        int Year = time.getYear();
        //月
        int Month = time.getMonthValue();
        //日
        int dayOfMonth = time.getDayOfMonth();
        //时
        int hour = time.getHour();
        //小时
        int minute = time.getMinute();
        //分钟
        int second = time.getSecond();
        System.out.println(Year + "年 " +  Month  + "月 " + dayOfMonth + "日 " + hour + "时 " +  minute + "分 " + second + "秒 ");
        //2023年 3月 4日 20时 27分 14秒 
    }
}DateTimeFormatter类
- DateTimeFormatter可以格式化LocalDate、LocalTime、LocalDateTime及Instant类
| 属性 | 说明 | 
|---|---|
| static DateTimeFormatter ofPattern(String pattern) | 静态方法,返回一个DateTimeFormatter对象 | 
| String format(TemporalAccessor t) | 格式化一个日期、时间,返回字符串 | 
| TemporalAccessor parse(CharSequence text) | 将指定格式的字符序列解析为一个日期、时间 | 
public class DateTest7 {
    public static void main(String[] args) {
        //获取当前时间
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime); //2023-03-04T20:31:57.261
        //把日期对象解析成LocalDateTime对象
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //格式化日期
        String format = dtf.format(localDateTime);
        System.out.println(format);  //2023-03-04 08小时03分钟57秒
        //字符串转换为日期
        String sy = "2001-10-17 15:30:05";
        
        TemporalAccessor parse = dtf.parse(sy);
        System.out.println(parse); //{},ISO resolved to 2001-10-17T15:30:05
    }
}