[Java]常用日期处理

来源:互联网 发布:数据机房空调设计 编辑:程序博客网 时间:2024/06/09 04:20

最近在复习Java基础,发现Java中关于日期处理的类比较杂乱,新手常常无法找到合适的方法。于是决定写一篇博文介绍一下Java常用的日期处理。

Java中常用的日期相关类以及它们之间的关系如下图所示,其中中间的Date是指java.util.Date,左下的Date指java.sql.Date。这几个类几乎包含了所有常用日期处理的方法,下边将分别详细介绍一下它们。


1.Date(java.util.Date)

Date类应该是Java中最早用于日期处理的类了,它的无参构造函数可以创建一个表示当前时间的对象,其他构造函数还支持通过将int类型的年月日或String类型的日期构造成日期对象,如下面代码所示:

//通过默认构造函数创建当前时间对象Date d = new Date();//通过int类型的年月日创建对象Date d = new Date(2014, 7, 30);//通过String类型的日期创建对象Date d = new Date("Sat 30 Oct 2014 14:59:00");
不过很遗憾的是,下面两种方法都在Java1.1版本被Calendar的set方法和DateFormat的parse方法所替代了,并且Date类中的所有的日期修改方法也被Calendar中的对应方法所替代,这说明Date类将不再用于日期修改,仅作为一个封装日期数据的类所提供。


2.Date(java.sql.Date)、Time和Timestamp

这三个Date类的子类在数据库操作中经常会碰到,分别被用来表示日期(年月日)、时间(时分秒)以及日期时间(年月日时分秒)。它们的作用一般用于保存从数据库中取出的日期数据,在此不多做介绍了。


3.Calendar

由于Date类对国际化支持的并不好,在Java1.1版本中推出了Calendar类,中文翻译就是日历的意思。Calendar是一个抽象类,我们需要使用它的静态方法getInstance获得一个表示当前时间的其实现类的实例,如下面代码所示:

//通过getInstance获得Calendar实例Calendar rightNow = Calendar.getInstance();
Calendar类用于日期处理提供了相当多的方法和静态变量,它的get和set方法需要通过字段设置和取出对应的值,如:

//通过set方法设置需要的时间rightNow.set(Calendar.HOUR_OF_DAY, 15);//通过get方法获得设置的时间int nowHour = rightNow.get(Calendar.HOUR_OF_DAY);
此外Calendar还提供对时间进行加减的方法add,如:

//在当前时间的基础上增加15分钟rightNow.add(Calendar.MINUTE, 15);
Calendar还有许多其它可以对日期进行修改的函数,可以查询API文档,本文就不一一详述了。


4.DateFormat

DateFormat类是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。在实际使用中我们通常使用它的子类SimpleDateFormat。

SimpleDateFormat的构造函数可以指定一个日期格式,然后按照这个日期格式去解析或输出日期对象,如:

//创建一个SimpleDateFormat对象,指定日期格式为年-月-日。SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//解析日期Date d = sdf.parse("2014-8-30");//创建另一个SimpleDateFormat,指定格式为xxxx年xx月xx日。sdf = new SimpleDateFormat("yyyy年MM月dd日");//转换日期String s = sdf.format(d);

4.其他

TimeZone类表示时区偏移量,由于使用较少本文就不详细说明了,有兴趣可以查询API文档。

System类有个currentTimeMillis方法,可以返回以毫秒为单位的当前时间,一般用于计算程序时间差。


5.总结

需要保存日期时可以使用java.util.Date类以及它的子类Java.sql.Date类、Time类和Timestamp类。

需要更改日期时,推荐使用Calendar类。

需要格式化解析或输出日期时,推荐使用SimpleDateFormat类。



0 0
原创粉丝点击