Java-----日期类之Calendar类详解

Posted 筱筱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-----日期类之Calendar类详解相关的知识,希望对你有一定的参考价值。

Calendar类概述

Calendar类是Java.util包中提供的一个抽象类,该类从JDK1.1开始出现,作为Date类的替代方案,Calendar类中包含了对不同国家地区日历的处理,Calendar类常见的子类为:java.util.GregorianCanlendar;获取Calendar对象一般使用类中提供的静态方法:getInstance(),该方法返回了Calendar的子类对象

Calendar类中的静态常量

Calendar.YEAR //表示年份

Calendar.MONTH //表示月份

Calendar.DATE //表示当前时间为多少号(日历式的多少号)

Calendar.HOUR //表示小时(12小时制)

Calendar.HOUR_OF_DAY //表示小时(24小时制)

Calendar.MINUTE //表示分钟数

Calendar.SECOND //表示秒数

Calendar.MILLENSECOND //表示毫秒数

Calendar.WEEK_OF_MONTH //当前时间是所在当前月的第几个星期(日历式的第几周)

Calendar.WEEK_OF_YEAR //当前时间是所在当前年的第几个星期

Calendar.DAY_OF_WEEK_IN_MONTH //当前时间是所在当前月的第几个星期,以月份天数为标准,一个月的1号为第一周,8号为第二周

Calendar.DAY_OF_WEEK //一周七天中,当前时间是一周中的第几天

Calendar.DAY_OF_YEAR //表示一年中的第几天

Calendar.DAY_OF_MONTH //表示一个月中的第几天,结果等同于Calendar.DATE

Calendar.AM_PM //表示是上午还是下午

Calendar.SUNDAY //周日

Calendar.MONDAY //周一

Calendar.TUESDAY //周二

Calendar.WEDNSDAY //周三

Calendar.THURSDAY //周四

Calendar.FRIDAY //周五
  
Calendar.SATURDAY //周六

使用具体代码运行如下:

Calendar c= Calendar.getInstance();
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;//此处加1因为Calendar中月份是从0开始计的
int date=c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");
//输出:2022年10月15日

Calendar中的常用方法

1  public static Calendar getInstance():创建Calendar类型的子类对象

Calendar c= Calendar.getInstance();

2  public int get(int filed):根据日历字段,获取其对应的值

Calendar c= Calendar.getInstance();
int year=c.get(Calendar.YEAR);
System.out.println(year+"年");
//输出:2022年

3  public final void set(int year,int month,int day):设置时间为指定的年,月,日

Calendar c=Calendar.getInstance();
c.set(2018, 2, 14);
year=c.get(Calendar.YEAR);
month=c.get(Calendar.MONTH);
date=c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");
//输出:2018年2月14日

4  public abstract void add(int field,int amount):根据日历的规则,将指定的时间量添加或减去给定的日历字段

//3年后的今天(插句话,正在读研的笔者真希望一键跳到三年后的今天)
c.add(Calendar.YEAR, 3);
year=c.get(Calendar.YEAR);
month=c.get(Calendar.MONTH)+1;
date=c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");
//输出:2025年10月15日

//10年后的五天前
c.add(Calendar.YEAR, 10);
c.add(Calendar.DATE, -5);
year=c.get(Calendar.YEAR);
month=c.get(Calendar.MONTH)+1;
date=c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");
//输出:2035年10月10日

5  Date getTime():返回一个Date表示日历的时间

Calendar c=Calendar.getInstance();
Date d=c.getTime();
System.out.println(d);
//输出:Sat Oct 15 21:01:07 CST 2022

java类之Calendar类

package com;

import java.util.Calendar;

/**
 * Calendar类概述及方法
 * 	Calendar类概述:Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAE、MONTH等日历字段之间的转换提供了一些方法,
 * 	并为操作日历字段提供了一些方法。
 * 
 * 成员方法:
 * 	public static Calendar getInstance()
 * 	public int get(int field) 返回给定日历字段的值,日历类的额每个字段都是静态的成员变量,并且是int类型
 * 	public void add(int field,int amount)
 * 	public final void set(int year,int month,int date)
 */
public class CalendarDemo {
	public static void main(String[] args) {
		Calendar calendar = Calendar.getInstance();
		
		//获取年
		int year = calendar.get(Calendar.YEAR);
		System.out.println("年:"+year);//年:2016
		
		//获取月
		int month = calendar.get(Calendar.MONTH);
		System.out.println("月:"+(month+1));//月:10
		
		//获取日
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		System.out.println("日:"+day);//日:12
		
		
		
	}

}
package com;

import java.util.Calendar;

/**
 * Calendar类概述及方法
 * 	Calendar类概述:Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAE、MONTH等日历字段之间的转换提供了一些方法,
 * 	并为操作日历字段提供了一些方法。
 * 
 * 成员方法:
 * 	public static Calendar getInstance()
 * 	public int get(int field) 返回给定日历字段的值,日历类的额每个字段都是静态的成员变量,并且是int类型
 * 	public void add(int field,int amount) 根据给定的日历字段和相应的时间,来对当前的日历进行操作
 * 	public final void set(int year,int month,int date) 设置当前当前日历的年月日 
 */
public class CalendarDemo {
	public static void main(String[] args) {
		//获取当前的日历时间
		Calendar calendar = Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH);
		int date = calendar.get(Calendar.DATE);
		System.out.println("当期的时间为:"+year+"-"+(month+1)+"-"+date);//当期的时间为:2016-10-12
		
		//三年前的今天
		calendar.add(Calendar.YEAR, -3);
		year = calendar.get(Calendar.YEAR);
		month = calendar.get(Calendar.MONTH);
		date = calendar.get(Calendar.DATE);
		System.out.println("3年前的今天:"+year+"-"+(month+1)+"-"+date);//3年前的今天:2013-10-12
		
		//三年后的今天
		calendar.add(Calendar.YEAR, 3);
		year = calendar.get(Calendar.YEAR);
		month = calendar.get(Calendar.MONTH);
		date = calendar.get(Calendar.DATE);
		System.out.println("三年后的今天:"+year+"-"+(month+1)+"-"+date);//三年后的今天:2016-10-12,这是因为刚才设置了3年前
		
		//设置年月日
		calendar.set(2019, 11, 11);
		year = calendar.get(Calendar.YEAR);
		month = calendar.get(Calendar.MONTH);
		date = calendar.get(Calendar.DATE);
		System.out.println("设置后的时间为:"+year+"-"+(month+1)+"-"+date);//设置后的时间为:2019-12-11
	}

}


本文出自 “11831428” 博客,请务必保留此出处http://11841428.blog.51cto.com/11831428/1861258

以上是关于Java-----日期类之Calendar类详解的主要内容,如果未能解决你的问题,请参考以下文章

Java小白入门200例58之日期Calendar类详解

Calendar日期类详解SimpleDateFormat时区Date夏令时常用方法,日期差获取当前时间

java工具类之实现日期随意跳转

java:通过Calendar类正确计算两日期之间的间隔

日期类之SimpleDateFormat

java集合类之ArrayList详解