java基础----Date类

来源:互联网 发布:linux网络排查 编辑:程序博客网 时间:2024/06/05 14:21

简介: Date类是从JDK1.1就开始存在的老类,其提供了针对日期进行操作的诸多方法,但其却一直饱受诟病,不同的起始编号,国际化的低支持,JDK官方也认识到这个问题,后台提出使用Calendar类进行日期操作,日期的格式化交给DateFormat,虽然我们已经不再使用Date类中的大多数方法,但是还有一部分保留的内容指的我们一谈。

Date类实例化对象方法:
分为对构造函数赋参和不赋参,不赋参构造函数会将当前日期和时间转化为Date对象,赋参构造函数会将指定的毫秒值封装为Date对象

Date date = new Date();System.out.println(date);        long time = System.currentTimeMillis();        date = new Date(time);        System.out.println(date);

我们先对一个Date对象进行无参初始化,然后调用System的读秒函数,对这个Date对象重新进行有参初始化,得到结果相同

Mon Nov 20 21:16:41 CST 2017

分析打印的Date对象的哈希值:

dow son dd:mm:ss zzz yyyy

dow:一周中的第几天
son:一年中的第几月
dd:一个月中的第几天
hh:小时
mm:分钟
ss:秒
zzz:时区
yyyy:年份

毫秒值和日期对象之间的转化:
毫秒值->日期对象:
1.通过Date对象的构造方法new Date(timeMills)实现

 Date date = new Date(System.currentTimeMillis());

2.通过setTime方法实现

Date date = new Date();        System.out.println(date);        date.setTime(1);        System.out.println(date);

Mon Nov 20 21:27:11 CST 2017
Thu Jan 01 08:00:00 CST 1970

日期对象->毫秒值
通过getTime()方法实现

Date date = new Date();        System.out.println(date);        System.out.println(date.getTime());

Mon Nov 20 21:28:56 CST 2017
1511184536295

日期对象的格式化

将日期对象转化为日期格式的字符串
使用的是DateFormat类的format方法

步骤:
1.获取一个Date对象
2.获取日期格式对象,具备默认风格,FULL,LONG等可以指定风格
3,通过DateFormat类的format(date)方法对字符串进行对应格式赋值,参数为对应的日期对象

Date date = new Date();        //DateFormat.getDateInstance()为一个静态工厂方法,通过工厂返回所需要的对象        DateFormat df = DateFormat.getDateInstance();        System.out.println(df.format(date));

2017-11-20

静态工厂方法可以有参数指定风格

DateFormat df = DateFormat.getDateInstance(DateFormat.FULL);

2017年11月20日 星期一

getDateInstance()方法返回日期
getDateTimeInstance()方法返回日期加时间

DateFormat df = DateFormat.getDateTimeInstance();        System.out.println(df.format(date));        df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.LONG);        System.out.println(df.format(date));

2017-11-20 21:41:50
2017年11月20日 星期一 下午09时41分50秒

如果输出风格是自定义的,可以通过DateFormat的实现类SimpleDateFormat()实现

DateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");        System.out.println(sdf.format(date));

2017-10-21

将日期格式的字符串转成日期对象
使用的是DateFormat中的parse()
需要抛出一个异常ParseException,维护传入参数格式

String strTime = "2017-11-21";        DateFormat df = DateFormat.getDateInstance();        Date date = df.parse(strTime);        System.out.println(date);

Tue Nov 21 00:00:00 CST 2017

如果想要获取日期和时间,也可以用getDateTimeInstance()工厂方法,但要注意传入参数的格式,不然会报异常

String strTime = "2017-11-21 14:16:25";        DateFormat df = DateFormat.getDateTimeInstance();

Tue Nov 21 14:16:25 CST 2017

相同的,可以采用自定义的方法生成Date对象

String strTime = "2017年6月11日";        DateFormat df = new SimpleDateFormat("yyyy年MM月DD日");

日期对象之间具有比较性
after,before,equals 返回类型均为布尔类型

Date date1 = new Date(1);        Date date2 = new Date(2);        System.out.println(date1.equals(date2));        System.out.println(date1.after(date2));        System.out.println(date1.before(date2));

false
false
true

总结:Date类现在并不推荐使用,Java推荐了Calendar和DateFormat,甚至SimpleDateFormat来替代它,Date中仅剩的几个方法仍然还很实用,尤其是before与after方法,可以很方便的判断两个时间点的先后,当然判断的条件是将你的时间转换成Date格式,使用Date剩余的两个构造器实现即可,当然也可以使用推荐的SimpleDateFormat方法进行简单的格式化日期格式字符串的方式得到Date格式的时间点

原创粉丝点击