Java的常用类—Date类和Calendar类

Java的常用类—Date类和Calendar类

开发工具与关键技术:工具:myeclipse  技术: Date、Calendar
作者:吴东梅
撰写时间:2019-06-16

Date类
Java提供了Date类来处理日期、时间(此处的Date是指java.util包下的Date类,而不是java.sql包下的Date类),Date对象既包含日期,也包含时间。Date类从JDK1.0起就开始存在了,因为它历史悠久,所以它的大部分构造器、方法都已经过时,不再推荐使用了。 构造器 Java.util.Date的构造器还剩下两个构造器,其他都已经过时(@Deprecated注解,表示已经不再推荐使用,使用会有警告,并且可以会导致程序性能或者安全性方面的问题) (1)Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
(2)Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
如下图所示:
在这里插入图片描述
方法
Java.util.Date的方法也剩下几个,其他都过时了。
(1)getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
(2)setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT以后 time 毫秒的时间点。
(3)before(指定日期) 测试此日期是否在指定日期之前。
(4)after(指定日期) 测试此日期是否在指定日期之后。
(5)compareTo(Date anotherDate) 比较两个日期的顺序。
代码如下:
long longValue = date.getTime();
System.out.println(longValue);
longValue += 10000;
date2.setTime(longValue);
System.out.println(date2.toString());
System.out.println(“date.before(date2)=”+date.before(date2));
//date-date2,返回-1,证明date比date2小。
System.out.println(“date.after(date2)=”+date.after(date2));
System.out.println(“date.compareTo(date2)=”+date.compareTo(date2));
效果图如下:
在这里插入图片描述
使用SimpleDateFormat类可以对 Date 和 String 相互转换:
代码如下:
System.out.println(“SimpleDateFormat 进行日期格式化”);
SimpleDateFormat dateFormat1 = new SimpleDateFormat(“yyy-MM-dd HH:mm:ss:SSS”);
String strDate = dateFormat1.format(date);
System.out.println(“strDate=”+strDate);
Date date3;
try {
//用parse时要注意,被转换时间字符串格式必须和转换声明的格式一致。
date3 = dateFormat1.parse(strDate);
System.out.println(date3);
} catch (ParseException e) {
// TODO: handle exception
e.printStackTrace();
}
效果图如下:
在这里插入图片描述
Calendar类
由于Date类过于古老,许多的构造器和方法都已经过时。Java推荐使用Calendar来完成时间计算等操作。 Calendar类中关于时间的属性:
在这里插入图片描述
常用方法 (1)get(int field) 返回给定日历字段的值。
System.out.println("------------获取时间----------");
System.out.println(“年:”+cal.get(Calendar.YEAR));
System.out.println(“月:”+(cal.get(Calendar.MONTH)+1));//月是从0开始的(0~11),所以需要+1。
System.out.println(“日:”+cal.get(Calendar.DAY_OF_MONTH));
System.out.println(“时:”+cal.get(Calendar.HOUR_OF_DAY));
System.out.println(“分:”+cal.get(Calendar.MINUTE));
System.out.println(“秒:”+cal.get(Calendar.SECOND));
(2)set(int field, int value) 将给定的日历字段设置为给定值。该方法有多个重载。
代码:
System.out.println("---------设置时间----------");
// 1、使用set一次设置
// cal.set(year, month, date, hourOfDay, minute, second);//月是从0开始(0~11)
cal.set(2019, 4,4,4,4,4); //输出的月份会比设置的月份大一个月。设置4月,输出5月。
System.out.println(cal.getTime());
//2、单个字段一一设置
cal.set(Calendar.YEAR, 2019);
cal.set(Calendar.MONTH, Calendar.MAY);//使用英文的十二个月的单词
cal.set(Calendar.DAY_OF_MONTH, 4);
cal.set(Calendar.HOUR_OF_DAY, 4);
cal.set(Calendar.MINUTE, 4);
cal.set(Calendar.SECOND, 4);
System.out.println(cal.getTime());
效果图:
在这里插入图片描述
(3)add(int field,int amount) 根据日历规则,为给定的日历字段添加或减去指定的时间量。
(4)roll(int field, int amount) 向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。
add方法会产生其他相关时间属性的连动变化(会自动加完之后,会跳转到下一年)。
roll方法只是对相应时间属性的域内做变化(只会停留在当年)。
如下所示,是add和roll的应用和它们之间的区别:
代码:
System.out.println("---------时间计算----------");
System.out.println("----add----");
cal.add(Calendar.MONTH, 5); //+5个月
System.out.println(cal.getTime());
cal.add(Calendar.MONTH, -5); //加-5个月
System.out.println(cal.getTime());
System.out.println("----roll----");
cal.add(Calendar.MONTH, 5); //+5个月
System.out.println(cal.getTime());
cal.add(Calendar.MONTH, -5); //加-5个月
System.out.println(cal.getTime());
System.out.println("----add 和 roll 的区别----");
Calendar calAdd = Calendar.getInstance();
calAdd.add(Calendar.MONTH, 9);
System.out.println(calAdd.getTime());

	Calendar calRoll = Calendar.getInstance();
	calRoll.roll(Calendar.MONTH, 9);
	System.out.println(calRoll.getTime());

效果图:
在这里插入图片描述
Calendar和Date的相互转换:如下图所示:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值