JAVA菜鸟入门篇 - Calendar日历类和GregorianCalendar公历类 (二十八)

本文介绍JAVA中的Calendar日历类和GregorianCalendar公历类,讲解如何在计算机时间与日期概念间建立联系,并探讨两者之间的关系,包括星期的表示方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Calendar日历类和GregorianCalendar公历类 


相应的API文档:Calendar类GregorianCalendar类


人们对于时间的认识是:某年某月某日,这样的日期概念。计算机中时间是用long类型表示的。两者之间通过Calendar搭起桥梁。


Calendar类和GregorianCalendar类的关系:

java.lang.Object
  继承者 java.util.Calendar
java.lang.Object
  继承者 java.util.Calendar
      继承者 java.util.GregorianCalendar


GergorianCalendar类是Calendar(Calendar是一个抽象类)的一个实现类,提供了世界上大多数国家/地区使用的标准日历系统。
注意:
 - 月份:一月是0,二月是1,以此类推,12月是11

 - 星期:周日是1,周一是2,......周六是7


接下来讲解Calendar类和GregorianCalendar类的常用方法

一、Calendar类

1.静态方法getInstance()
Calendar类的静态方法getInstance()可以初始化一个日历对象:Calendar now = Calendar.getInstance();

2.set()方法:使用下面三个方法把日历定到任何一个时间:  
set(int year ,int month,int date)  
set(int year ,int month,int date,int hour,int minute)  
set(int year ,int month,int date,int hour,int minute,int second) 

3.获取年份、月份、小时等信息可以使用方法:  
get(Calendar.Month);这样的方法 0表示一月,1表示二月  
get(Calendar.DAY_OF_MONTH)获得这个月的第几天  
get(Calendar.DAY_OF_WEEK)获得这个星期的第几天  
get(Calendar.DAY_OF_YEAR)获得这个年的第几天  
getTimeMillis()获得当前时间的毫秒表示 

4.日期计算相应方法:add()、after()和before()
abstract void add(int field, int amount)  
根据日历的规则,为给定的日历字段添加或减去指定的时间量。 
boolean after(Object when)  
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。  
boolean before(Object when)  
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。 

更多有关Calendar类的方法的学习,可以点击:http://blog.youkuaiyun.com/myjlvzlp/article/details/8065775



二、GregorianCalendar类

GregorianCalendar是 Calendar的一个具体子类,提供了世界上大多数国家使用的标准日历系统。

它的主要方法有:
GregorianCalendar.get(GregorianCalendar.YEAR);          //得到年
GregorianCalendar.get(GregorianCalendar.MONTH);         //得到月
GregorianCalendar.get(GregorianCalendar.DATE);          //得到天
GregorianCalendar.get(GregorianCalendar.Day_OF_WEEK);   //一星期的第几天
GregorianCalendar.get(GregorianCalendar.Day_OF_MONTH);  //一月的第几天
 
注意:
GregorianCalendar是在java.util包里.
在GregorianCalendar里面,星期天是一周开始的第一天;而0代表现实生活中的一月,11代表十二月。
 
例子:(用户输入年月日,计算那天是星期几)
<span style="font-family:SimSun;font-size:18px;">public class TestWeekday {
	public static void main(String[] args){
		Scanner scannerInput = new Scanner(System.in);
		System.out.println("请以此按照年、月、日次序输入:");
		int year = scannerInput.nextInt();
		int month = scannerInput.nextInt();
		int day = scannerInput.nextInt();
		GregorianCalendar gre = new GregorianCalendar();
		gre.set(year, month, day);
		int num = gre.get(gre.DAY_OF_WEEK)-1;
		String weekDay = null;
		switch(num){
		case 0 :
			weekDay = "星期天";break;
		case 1 :
			weekDay = "星期一";break;
		case 2 :
			weekDay = "星期二";break;
		case 3 :
			weekDay = "星期三";break;
		case 4 :
			weekDay = "星期四";break;
		case 5 :
			weekDay = "星期五";break;
		case 6 :
			weekDay = "星期六";break;		
		}
		System.out.println("您所输入的"+year+"年"+month+"月"+day+"日"+"是:"+weekDay);
	} 
}</span>
测试:
请以此按照年、月、日次序输入:
2015
2
1
您所输入的2015年2月1日是:星期天


本文参考:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值