持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
让我们一起来看一下Calendar日期类吧。Calendar为第二代时间类,出现于JDK1.1。Calendar是一个抽象类,并且构造器是private。可以通过getInstance()来获取实例。Calendar没有提供对应的格式化的类,因此需要程序员自己组合来输出。
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的所有字段时只要调用getInstance()就可以,代码如下。
Calendar calendar =Calendar.getInstance();
System.out.println(calendar);
效果
当然,想获取单个Calendar的单个字段也是可以的,代码如下。
Calendar calendar =Calendar.getInstance();
System.out.println("年:"+ calendar.get(Calendar.YEAR));
//(calendar.get(Calendar.MONTH)+1)//这里加1是因为返回月的时候按照0开始编号
System.out.println("月:"+ (calendar.get(Calendar.MONTH)+1));
System.out.println("日:"+ calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("小时:"+ calendar.get(Calendar.HOUR));
System.out.println("分钟:"+ calendar.get(Calendar.MINUTE));
System.out.println("秒:"+ calendar.get(Calendar.SECOND));
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
System.out.println("星期:"+ calendar.get(Calendar.DAY_OF_WEEK));
效果
年:2022
月:6
日:3
小时:11
分钟:3
秒:31
星期:7
有时我们不想获取当前时间,而是想要自己定一个时间。那Calendar类可以实现吗?答案是肯定的,代码如下。
Calendar calendar = Calendar.getInstance();
//public final void set(int year,int month,int date)
calendar.set(2009, 6, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
System.out.println("年:" + calendar.get(Calendar.YEAR));
System.out.println("月:" + calendar.get(Calendar.MONTH));
System.out.println("日:" + calendar.get(Calendar.DAY_OF_MONTH));
效果
年:2009
月:6
日:12
利用字段类型设置。如果只设定某个字段,则可以使用如下set方法:
Calendar calendar = Calendar.getInstance();
//把 calendar对象代表的年份设置为2008年,其他的所有数值会被重新计算
//public void set(int field,int value)
calendar.set(Calendar.YEAR,2008);
//把 calendar对象代表的月份设置为2号,其它所有的数值会被重新计算
calendar.set(Calendar.MONTH,2);
//把 calendar对象代表的日期设置为10号,其它所有的数值会被重新计算
calendar.set(Calendar.DATE,10);
System.out.println("年:" + calendar.get(Calendar.YEAR));
System.out.println("月:" +( calendar.get(Calendar.MONTH)+1));
System.out.println("日:" + calendar.get(Calendar.DAY_OF_MONTH));
效果
年:2008
月:3
日:10
Calendar类非常的灵活,就在于它可以获取单个字符。在把单个的字符组成我们想要得到的任何形式,代码如下。
Calendar calendar =Calendar.getInstance();
ystem.out.println(+calendar.get(Calendar.YEAR) + "年"+ (calendar.get(Calendar.MONTH)+1) + "月"+ calendar.get(Calendar.DAY_OF_MONTH)+"日");
效果
2022年6月3日