JavaSE Date类与Java 8新增的java.time包

最近做项目的时候,对时间类的使用还不是很熟练,看书再总结一下。


java.util.Date 类

Date类内部保存了现在到1970.1.1.00.00.00 UTC之间的毫秒数,并且把这个毫秒数换算成年月日时分秒供开发者使用。该类设计有一定的缺陷,不推荐使用。
1.构造器

Date():生成一个代表当前日期的Date对象。底层调用System.currentTimeMillis()获得long整数作为当前日期。
Date(long date):根据制定的long型整数生成Date对象。

2.方法

long getTime():返回该时间从1970-01-01 00:00:00 到Date对象的时间差。
void setTime(long time): 设置Date对象的时间
boolean after(Date when): 判断当前时间是否在制定时间when之后
boolean before(Date when):判断当前时间是否在指定时间when之前

测试

public class test{
    public static void main(String[] args){
        Date date1 = new Date();
        System.out.println(date1);

        Date date2 = new Date(System.currentTimeMillis()+1000); //当前时间+1秒
        System.out.println(date2);
        System.out.println(date2.getTime());
        System.out.println(date1.after(date2));
        System.out.println(date1.before(date2));

        Date date3 = newe Date();
        date3.setTime(1000+date3.getTime());
        System.out.println(date3);
    }
}

输出:

Thu Nov 30 13:21:57 CST 2017
Thu Nov 30 13:21:58 CST 2017
1512019318386
false
true
Thu Nov 30 13:21:58 CST 2017

Date这个类责任不清晰,既表示日期,还表示时间,打印时还会打印出时区。这真的是个很糟糕的设计。


然后Java又设计了calendar类,这个类设计依然很烂。。就不赘述了


Java.time

Java8 专门新增了一个java.time包,该包包含了如下常用的类。
有四个核心类,

java.time.LocalDate(只表示日期,不包含时区信息)
java.time.LocalTime(只表示时间,不包含时区信息)
java.time.LocalDateTime (大概相当于java.util.Date,不包含时区信息,而且可以进行加减操作)。
java.time.ZonedDateTime(大概相当于java.util.Calendar)

简要地说:日期,时间和时区终于区分开来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值