对于Java的时间操作,有你不知道的知识点

来源:互联网 发布:汉王软件 编辑:程序博客网 时间:2024/06/05 03:26

Java在操作有关时间的时候,如果你只会使用Date那么说明你已经过时了,现在我们要使用的更方便的类Calendar

Calendar故名思意,他是一个日历表类,现实中的日历既能查看当前日期,也能查看以后的日历,比如今天周几,今天几号。

在Java中Calendar是一个很精确的时间工具,它的精确程度已经精确到毫秒级了。
接下来我们用代码来介绍这个神奇的类:

//使用cal来获取现在的时间,看以下的例子//创建一个实例,默认是获取当前的时间。Calendar  cal = Calendar.getInstance();SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//使用getTime来获取代表当前的Date时间对象System.out.println(format.format(cal.getTime()));//如果要改变时间那么随便设置就好,但是要注意cal他会满了进制会自动进位//比如月数是从零开始。cal.set(2017,11,25,36,58,96);System.out.println(format.format(cal.getTime()));

上面的小例子,相信读者朋友们已经认识到这个类的方便之处了。下面我们再深入探究一下我们的calendar类细微之处。

// 显示当前年份int year = cal.get(Calendar.YEAR);System.out.println("year is = " + String.valueOf(year));// 显示当前月份 (从0开始, 实际显示要加一)int month = cal.get(Calendar.MONTH);System.out.println("nth is = " + (month + 1));// 本周几int week = cal.get(Calendar.DAY_OF_WEEK);System.out.println("week is = " + week);// 今年的第 N 天int DAY_OF_YEAR = cal.get(Calendar.DAY_OF_YEAR);System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR);// 本月第 N 天int DAY_OF_MONTH = cal.get(Calendar.DAY_OF_MONTH);System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH));

上面是获取一个具体时间的一些具体的信息。

Calendar不只是只能设置和获取信息,他还有计算的能力,下面就展示Calendar的计算能力

// 3小时以后cal.add(Calendar.HOUR_OF_DAY, 3);int HOUR_OF_DAY = cal.get(Calendar.HOUR_OF_DAY);System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY);// 当前分钟数int MINUTE = cal.get(Calendar.MINUTE);System.out.println("MINUTE = " + MINUTE);// 15 分钟以后cal.add(Calendar.MINUTE, 15);MINUTE = cal.get(Calendar.MINUTE);System.out.println("MINUTE + 15 = " + MINUTE);// 30分钟前cal.add(Calendar.MINUTE, -30);MINUTE = cal.get(Calendar.MINUTE);System.out.println("MINUTE - 30 = " + MINUTE);

相信读者根据上面的代码测试之后,一定会感觉这个太方便了,有些定时任务,在定时刷新,就能使用这个类来做一个不小的辅助。

最后,推出它的格式化方式吧,毕竟他获得的是默认的时间格式,我们为了让时间变得可读性,我们要结合DateFormat一起使用。

String str;// 格式化显示str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(cal.getTime());System.out.println(str);// 重置 cal 显示当前时间cal.setTime(new Date());str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(cal.getTime());System.out.println(str);// 创建一个 cal 用于比较时间Calendar calNew = Calendar.getInstance();// 设定为 5 小时以前,后者大,显示 -1calNew.add(Calendar.HOUR, -5);System.out.println("时间比较:" + calNew.compareTo(cal));// 设定7小时以后,前者大,显示 1calNew.add(Calendar.HOUR, +7);System.out.println("时间比较:" + calNew.compareTo(cal));// 退回 2 小时,时间相同,显示 0calNew.add(Calendar.HOUR, -2);System.out.println("时间比较:" + calNew.compareTo(cal));
原创粉丝点击