java的日期类

1、Date类

最早使用的时间类

Date是从1900年1月1日0时0分0秒开始的,因此在创建Date类时需注意,

有参构造的:

new Date(int year, int month, int day);

这个year需要传年减去1900的值,比如你想要2022年那么你需要传个122

这个month是从0开始的,0-11表示1到12月,因此如果你想要3月你需要传个2

所以相对的

从一个Date内获取年份,需要加上1900 也就是说date.getYear()返回的也会是122,这个122对应的就是2022年

从一个Date内获取月份,需要加上1也就是说date.getMonth()返回的也会是2,这个2对应的就是3月

还有一个特殊的就是获取日期的星期数

getDay() 返回的是 0代表周日,其他1-6代表周一到周六

2、simpleDateFormat

simpleDateFormat是用于格式化日期的一个类,通常用于Date的格式转化。

为什么需要格式化日期的类,

由于世界上的日期表现形式有很多种,不同地方用不同的格式但是对应的含义又是一样的,那么两个不同地区的人怎么能让对方明白这个日期的具体数值呢?这里就需要格式化类了,其实也就是相当于一个翻译器的功能。

Date NowDate = new Date();
SimpleDateFormat formatter =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat formatter =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String CurrentTime = formatter.format(NowDate);

使用不同的调用就会有不同的结果出现,只要知道规则就能找到对应的日期了。

3、Calendar

由于Date在很多情况下使用都比较不友好,比如我要指定年份还需要计算一下才能知道参数,再一个Date类没办法进行加减操作,很多时候我们需要拿到去年,或者两个月前的日期,这种就不好用Date类了,因此,诞生了Calendar类

Calendar 是一个抽象类,所以不能直接调用构造出来。

Calendar c1 =  Calendar.getInstance(); 可以直接使用类里的静态方法得到一个实例化对象。

我们可以直接调用c1.set(2022, 4- 1, 29);来设置日期 这里需要注意月份还是和Date类一样设置都是从0开始的

另一个注意点是这里星期的规则和原本就不一样了。

由于国外都是算周日是一个星期的开始,因此这里使用1代表星期日,2代表星期一依次类推。

还有个比较好的方法就是它的add方法,可以对日期,月份,年份进行加减。

4、LocalDate、LocalTime和LocalDateTime

为什么需要这三个类?

对于Date来说Date是一个时间点,那么日期和时间就被一个Date掌控了,这不符合单一职责原则,此外,由于地球很多地方处于不同时区,那么地球上同一时间却有了不同的时间表示,因此诞生了LocalDate类来处理日期,LocalTime来处理时间,以及LocalDateTime类来处理对应的日期+时间,这里是可以传入时区参数来获取不同时区的时间的,这对于一些国际化项目来说是十分重要的,当然这三个类还是线程安全的类,这一点在多线程运行环境下也十分重要。

这些类的使用方式?

    //获取当前时区的日期
    LocalDate localDate = LocalDate.now();
    //时间
    LocalTime localTime = LocalTime.now();
    //根据上面两个对象,获取日期时间
    LocalDateTime localDateTime = LocalDateTime.of(localDate,localTime);

   //使用静态方法生成此对象

    LocalDateTime localDateTime2 = LocalDateTime.now();

优点

        1、线程安全

        2、使用简单,无需对年份,月份进行处理,能直接对应上数据的时间

        3、方法更加丰富,并且有基于时区的时间计算

总结:

        在jdk1.8后,推荐使用LocalDate、LocalTime和LocalDateTime

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值