java的三代日期类(Date,Calender,LocalDate)

java的三代日期类

第一代日期类 Date

Date 类是在 java.util 包
Date:可以精确到毫秒,可以表示一个瞬间
1.SimpleDateFormat类:格式和解释日期的类,即,创建 SimpleDateFormat 对象,可以指定相应的格式。这里的格式已经规定好,字母已经是规定好了所代表的时间模式。
format方法:可以将日期转换为指定的格式字符串
2. public Date(long date)
分配一个 Date对象,并将其初始化为表示从标准基准时间(称为“时代”)
即1970年1月1日00:00:00 GMT起的指定毫秒数。
3.SimpleDateFormat类中的parse方法
可以把一个格式化字符串转成对应的Date
使用的sdf格式需要和你给的 String 的格式一样,否则会抛出转换异常

Date 测试代码:

package com.yjgTest.All;

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

public class Date1 {
    public static void main(String[] args) throws ParseException {
        Date d1=new Date();
        System.out.println("当前时间:"+d1);
        //1.创建SimpleDateFormat对象,可以指定相应的格式
        //这里的格式已经规定好,字母已经是规定好了的代表的东西
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日  hh:mm:ss E");
        //format:将日期转换为指定的格式字符串
        String format=sdf.format(d1);
        System.out.println("当前时间:"+format);
        //2.分配一个 Date对象,并将其初始化为表示从标准基准时间(称为“时代”)
        // 即1970年1月1日00:00:00 GMT起的指定毫秒数。
        Date d2=new Date(9234567);
        System.out.println(sdf.format(d2));
        //3.可以把一个格式化字符串转成对应的Date
        //使用的sdf格式需要和你给的 String 的格式一样,否则会抛出转换异常
        String s = "2012年08月24日  05:56:09 星期日";
        Date parse=sdf.parse(s);
        System.out.println(parse);
    }
}

第二代日期类 Calendar

Calendar是在 java.util 包
Calendar:所述Calendar类是一个抽象类,可以为在某一特定时刻和一组,如YEAR , MONTH , DAY_OF_MONTH , HOUR 提供了一些方法,以及可以用于操纵该日历字段。
1. getInstance() 方法:
Calendar 是一个抽象类, 并且构造器是 private
可以通过 getInstance() 来获取实例
2. 提供大量的方法获取相应的字段提供给程序员
3. Calendar.HOUR 和Calendar.HOUR_OF_DAY区别:如果我们需要按照 24 小时进制来获取时间, Calendar.HOUR ==改成=> Calendar.HOUR_OF_DAY

Calendar测试代码:

package com.yjgTest.All;
import java.util.Calendar;
public class Calendar_ {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        System.out.println("c=" + c);
//获取日历对象的日历字段
        System.out.println("年:" + c.get(Calendar.YEAR));
// 月份加一,因为 Calendar 返回月时候,是按照 0 开始编号
        System.out.println("月:" + (c.get(Calendar.MONTH) + 1));
        System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
        System.out.println("小时:" + c.get(Calendar.HOUR));
        System.out.println("分钟:" + c.get(Calendar.MINUTE));
        System.out.println("秒:" + c.get(Calendar.SECOND));
      //Calender 没有专门的格式化方法,需要自己组合显示
        //按照 12 小时进制来获取时间
        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" +
                c.get(Calendar.DAY_OF_MONTH) + " " + c.get(Calendar.HOUR) + ":" + c.get(Calendar.MINUTE)
                + ":" + c.get(Calendar.SECOND) );
        //按照 24 小时进制来获取时间
        System.out.println( c.get(Calendar.YEAR)+"-"+ (c.get(Calendar.MONTH) + 1) + "-" +
                c.get(Calendar.DAY_OF_MONTH) + " " +c.get(Calendar.HOUR_OF_DAY)+":" + c.get(Calendar.MINUTE)
                + ":" + c.get(Calendar.SECOND) );
    }
}

第三代日期类 LocalDate LocalTime LocalDateTime

LocalDate:是一个不可变的日期时间对象,表示日期,通常被视为年月日。
LocalDateTime:是一个不可变的日期时间对象,代表日期时间,通常被视为年 - 月 - 日 - 时 - 分 - 秒。
LocalTime:是一个不可变的日期时间对象,代表一个时间,通常被看作是小时 - 秒。
1. now(): 使用 now() 返回表示当前日期时间的 对象
2.DateTimeFormatter : 使用 DateTimeFormatter 对象来进行格式化,格式化器用于打印和解析日期时间对象。类似SimpleDateFormat
3. plus 和minus “提供 plus 和 minus 方法可以对当前时间进行加或者减

LocalDate等 测试代码:

package com.yjgTest.All;


import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class LocalDate_ {
    public static void main(String[] args) {
        //1. 使用 now() 返回表示当前日期时间的 对象
        //可以获取年月日获取到时分秒
        //三个日期可以使用相同的方法获取到当前对应日历字段
        LocalDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()
        System.out.println("当前日期时间:"+ldt);
        //2. 使用 DateTimeFormatter 对象来进行格式化
        // 创建 DateTimeFormatter 对象
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String format = dateTimeFormatter.format(ldt);
        System.out.println("格式化的日期:" + format);
        //获取当前日期时间对象的日历字段
        System.out.println("年=" + ldt.getYear());
        System.out.println("月=" + ldt.getMonth());
        System.out.println("月=" + ldt.getMonthValue());
        System.out.println("日=" + ldt.getDayOfMonth());
        System.out.println("时=" + ldt.getHour());
        System.out.println("分=" + ldt.getMinute());
        System.out.println("秒=" + ldt.getSecond());
        LocalDate now1 = LocalDate.now(); //获取年月日
        System.out.println(now1);
        LocalTime now2 = LocalTime.now();//获取到时分秒
        System.out.println(now2);
       // 3.plus 和 minus 方法
       //看看 50 天后的年月日-时分秒
        LocalDateTime localDateTime = ldt.plusDays(50);
        System.out.println("50天后=" + dateTimeFormatter.format(localDateTime));
        //看看在 36000 分钟前的年月日-时分秒
        LocalDateTime localDateTime2 = ldt.minusMinutes(36000);
        System.out.println("36000分钟前日期=" + dateTimeFormatter.format(localDateTime2));
        //看看 630 小时后的 年月日-时分秒
        LocalDateTime localDateTime3 = ldt.plusHours(630);
        System.out.println("630小时后日期=" + dateTimeFormatter.format(localDateTime3));

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yjg_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值