JAVA时间戳-Calendar类使用(包括set,get,add方法)
作者:冰冰很社恐
这篇文章主要介绍了JAVA时间戳-Calendar类使用(包括set,get,add方法),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
一、Calendar类
想要取得时间,首先使用Calendar的getInstance()取得一个Calendar的实例,例如:
Calendar c = Calendar.getInstance();
创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。
getInstance() 方法返回一个 Calendar 对象,其日历字段已 由当前日期和时间初始化。
Calendar 类中定义了许多常量,分别表示不同的意义。
- Calendar.YEAR:年份。
- Calendar.MONTH:月份。
- Calendar.DATE:日期。
- Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
- Calendar.HOUR:12小时制的小时。
- Calendar.HOUR_OF_DAY:24 小时制的小时。
- Calendar.MINUTE:分钟。 Calendar.SECOND:秒。
- Calendar.DAY_OF_WEEK:星期几。
二、Calendar类的常用方法
2.1 get()方法
获取值
cal.get(Calendar.YEAR);//年 cal.get(Calendar.MONTH) + 1;//月(Calendar在月份上的常数值从0开始的) cal.get(Calendar.DATE);//日 cal.get(Calendar.HOUR_OF_DAY);//时 cal.get(Calendar.MINUTE);//分 cal.get(Calendar.SECOND);//秒 cal.get(Calendar.DAY_OF_WEEK);//星期(Locale.ENGLISH情况下,周日是1) cal.get(Calendar.DAY_OF_WEEK);//获取当前是一周中的第几天(从0开始计算) cal.get(Calendar.DAY_OF_MONTH);//获取当前是一月的第几天 cal.get(Calendar.DAY_OF_YEAR);//获取当前时一年中的第几天
示例代码如下:
public class CalandarTest {
public static void main(String[] args) {
Calendar cal=Calendar.getInstance();
//获取当前年
int year= cal.get(Calendar.YEAR);
System.out.println(year);
//获取当前月(从0开始计算)
int month= cal.get(Calendar.MONTH);
System.out.println(month);
//获取当前日
int date= cal.get(Calendar.DATE);
System.out.println(date);
//获取当时小时
int hour= cal.get(Calendar.HOUR);
System.out.println(hour);
//获取当前分钟数
int minute= cal.get(Calendar.MINUTE);
System.out.println(minute);
//获取当前秒数
int second= cal.get(Calendar.SECOND);
System.out.println(second);
//获取当前是一周中的第几天(从0开始计算)
int wday= cal.get(Calendar.DAY_OF_WEEK);
System.out.println(wday);
//获取当前是一月的第几天
int mday= cal.get(Calendar.DAY_OF_MONTH);
System.out.println(mday);
//获取当前时一年中的第几天
int yday= cal.get(Calendar.DAY_OF_YEAR);
System.out.println(yday);
}
}2.2 set()方法
设置值(返回为日期对象)
cal.set(2023, 7, 15, 9, 44, 51);//年月日时分秒(月份0代表1月) cal.set(Calendar.YEAR, 2023);//年 cal.set(Calendar.MONTH, 7);//月(月份0代表1月) cal.set(Calendar.DATE, 11);//日 cal.set(Calendar.HOUR_OF_DAY, 15);//时 cal.set(Calendar.MINUTE, 33);//分 cal.set(Calendar.SECOND, 32);//秒
示例代码如下:
public class CalandarTest {
public static void main(String[] args) {
Calendar cal=Calendar.getInstance();
//设置当前年
cal.set(Calendar.YEAR,2022);
System.out.printf("%tY%n",cal);
//设置当前月(从0开始计算)
cal.set(Calendar.MONTH,5);
System.out.printf("%tm%n",cal);
//设置当前日
cal.set(Calendar.DATE,5);
System.out.printf("%td%n",cal);
//设置当时小时
cal.set(Calendar.HOUR,14);
System.out.printf("%tl%n",cal);
//设置当前分钟数
cal.set(Calendar.MINUTE,50);
System.out.printf("%tM%n",cal);
//设置当前秒数
cal.set(Calendar.SECOND,12);
System.out.printf("%tS%n",cal);
}
}输出结果如下:

2.3 add()方法
运算值(在获取的当前时间进行运算,返回值为日期对象)
cal.add(Calendar.YEAR, 1);//年 cal.add(Calendar.MONTH, 1);//月 cal.add(Calendar.DATE, 1);//日 cal.add(Calendar.HOUR_OF_DAY, -1);//时 cal.add(Calendar.MINUTE, 1);//分 cal.add(Calendar.SECOND, 1);//秒 cal.add(Calendar.DATE, 7);//周
示例代码如下:
public class CalandarTest {
public static void main(String[] args) {
Calendar cal=Calendar.getInstance();
//以当前年计算
cal.add(Calendar.YEAR,2022);
System.out.printf("%tY%n",cal);
//以当前月(月份不从0开始计算)计算
cal.add(Calendar.MONTH,5);
System.out.printf("%tm%n",cal);
//以当前日计算
cal.add(Calendar.DATE,-5);
System.out.printf("%td%n",cal);
//以当时小时小时
cal.add(Calendar.HOUR_OF_DAY,14);
System.out.printf("%tl%n",cal);
//以当前分钟数计算
cal.add(Calendar.MINUTE,-50);
System.out.printf("%tM%n",cal);
//以当前秒数计算
cal.add(Calendar.SECOND,12);
System.out.printf("%tS%n",cal);
}
}输出结果如下:

三、格式化日期输出
Calendar类返回的时间类型为对象类型,为了方便输出展示,在输出时可以将日期格式化。
| 转换符 | 说明 |
| %tH | 小时(00-23) |
| %tL | 小时(01-12) |
| %tk | 小时(0-23) |
| %tM | 分钟(00-29) |
| %tS | 秒(00-59) |
| %tL | 毫秒(000-999) |
| %tN | 微秒(000000000-999999999) |
| %tp | 当前语言环境下的上午/下午 |
| %ts | 从1970-01-01 00:00:00到现在的秒 |
| %tQ | 从1970-01-01 00:00:00到现在的毫秒 |
| %tF | 年-月-日 |
| %tT | 时-分-秒 |
| %tD | 月/日/年 |
| %tc | 全部时间日期 |
| %tR | 时分 |
| %tr | 时分秒PM |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
