原标题:技术分享 | Java中Calendar类的基本用法
小编今天给大家分享一篇技术文章——
讲述java中Calendar类的基本用法
对于时间类,这篇主要说明各种现实情况下如何取值,怎么定向取值,得到自己想要的时间参数。
在java中时间类主要有Date、Calendar,暂时只介绍 java.util.*下的时间类,这篇主要内容有以下几个。
1、如何获取当前时间参数
2、如何过去某一个月第一天和最后一天
首先,我们需要了解API下对其的介绍,让在使用的时候明白为什么这么写?
对于Date,很多方法已经过时迁移到了Calendar类上,但是这是最初的时间类,构造方法主要介绍两种即
Date date= new Date();//分配对象并初始话
Date date= new Date(long date)//分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日00:00:00 GMT)以来的指定毫秒数。
可以看得出来,Date是以历元为标准的,简单的验证下你的猜想。new Date().getYear() 的值是 117 然而今年是 2017 。
对于Calendar,与Date不同的是,他对Date的时间历元进行偏移,要是看括号里的有点晕可不看。API(Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量)。
Calendar不得不说的就是类方法 getInstance,Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:这个方法你必须要知道,不然你玩什么Calendar呢是不是?
由于这个类是一个抽象类,不能直接创建对象,但是它给提供了一个静态方法来获取对象,实际底层是
createCalendar(TimeZone.getDefaultRef(), Locale.getDefault(Locale.Category.FORMAT));来创建了一个对象。
而我们在使用时是可以直接调用来获取到对象Calendar rightNow = Calendar.getInstance();这种形式其实也就是父类引用指向子类对象的一种多态形式。
1、如何过去当前时间参数
Date NowDate = new Date();
SimpleDateFormat formatter =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
CurrentTime = formatter.format(NowDate);
return CurrentTime;
2、如何过去某一个月第一天和最后一天
public static String getLastDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DATE));
return new SimpleDateFormat( "yyyy-MM-dd ").format(cal.getTime());
}
public static String getFirstDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH,cal.getMinimum(Calendar.DATE));
return new SimpleDateFormat( "yyyy-MM-dd ").format(cal.getTime());