欢迎访问宙启技术站
智能推送

Java中如何使用Date类和Calendar类来操作日期和时间?

发布时间:2023-06-26 01:51:45

Java中的Date类和Calendar类都是用来操作日期和时间的类,但它们的实现方法有所不同。

一、Date类

Date类是Java最早的用来操作日期和时间的标准类,它用一个长整型数值来表示时间戳,即从1970年1月1日00:00:00开始到某一时刻经过的毫秒数,它的使用方法如下:

1、通过无参构造函数可以实例化一个表示当前时间的Date对象:

Date now = new Date();

2、通过传入一个时间戳来实例化一个指定时间的Date对象:

Date date = new Date(1514131200000L);

3、Date类提供了一系列getter和setter方法来获取和修改日期和时间的某个属性:

//获取年份

int year = date.getYear() + 1900;

//获取月份(0-11)

int month = date.getMonth() + 1;

//获取日

int day = date.getDate();

//获取小时(0-23)

int hour = date.getHours();

//获取分钟

int minute = date.getMinutes();

//获取秒

int second = date.getSeconds();

4、Date类也提供了一些方法来比较两个时间的先后关系:

//两个时间相差的毫秒数

long diff = date1.getTime() - date2.getTime();

//判断两个时间是否相等

boolean isEqual = date1.equals(date2);

//判断一个时间是否早于另一个时间

boolean isBefore = date1.before(date2);

//判断一个时间是否晚于另一个时间

boolean isAfter = date1.after(date2);

二、Calendar类

Calendar类是Java中另一个用来操作日期和时间的类,它提供了更为丰富的时间计算和操作方法,它的使用方法如下:

1、通过静态方法getInstance()获取Calendar类的实例:

Calendar calendar = Calendar.getInstance();

2、可以通过set()方法设置特定的日期和时间:

calendar.set(Calendar.YEAR, 2021);

calendar.set(Calendar.MONTH, Calendar.JANUARY);

calendar.set(Calendar.DAY_OF_MONTH, 1);

calendar.set(Calendar.HOUR_OF_DAY, 0);

calendar.set(Calendar.MINUTE, 0);

calendar.set(Calendar.SECOND, 0);

calendar.set(Calendar.MILLISECOND, 0);

3、可以通过get()方法获取特定日期和时间的属性:

int year = calendar.get(Calendar.YEAR);

int month = calendar.get(Calendar.MONTH) + 1;

int day = calendar.get(Calendar.DAY_OF_MONTH);

int hour = calendar.get(Calendar.HOUR_OF_DAY);

int minute = calendar.get(Calendar.MINUTE);

int second = calendar.get(Calendar.SECOND);

4、可以通过add()方法将特定日期或时间增加或减少一定的量:

calendar.add(Calendar.YEAR, 1);

calendar.add(Calendar.MONTH, -1);

5、可以通过getTime()方法将Calendar对象转换成Date对象:

Date date = calendar.getTime();

6、可以通过getTimeInMillis()方法将Calendar对象转换成时间戳,也可以用它来计算两个时间之间的差值:

long timeInMillis = calendar.getTimeInMillis();

long diff = calendar1.getTimeInMillis() - calendar2.getTimeInMillis();

7、可以通过setLenient()方法设置日期转换是否容错。如果设置为true,那么在日期转换错误时会尝试进行自动调整。如果设置为false,那么在日期转换错误时会抛出IllegalArgumentException异常。

calendar.setLenient(true);

总结:

Java中的Date类和Calendar类都是用来操作日期和时间的类。Date类最为基础,它用一个长整型数值来表示时间戳,它的方法较为简单,但是由于它是个过时的类,也存在一些问题,比如Date的getYear()方法返回的年份是从1900开始的,需要加上1900才是实际年份。Calendar类是Java中提供的一个更为丰富和高级的日期和时间操作类,它提供了许多更加可靠、灵活、方便的操作方法,但也由于它的功能比较繁杂,使用起来也相对较为复杂。在实际项目中,应当根据具体情况选择合适的类来进行操作。