Calendar日历类

Calendar日历类Calendar日历类和GregorianCalendar公历类

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代表十二月。
 
例子:(用户输入年月日,计算那天是星期几)
  1. <span style="font-family:SimSun;font-size:18px;">public class TestWeekday {  
  2.     public static void main(String[] args){  
  3.         Scanner scannerInput = new Scanner(System.in);  
  4.         System.out.println("请以此按照年、月、日次序输入:");  
  5.         int year = scannerInput.nextInt();  
  6.         int month = scannerInput.nextInt();  
  7.         int day = scannerInput.nextInt();  
  8.         GregorianCalendar gre = new GregorianCalendar();  
  9.         gre.set(year, month, day);  
  10.         int num = gre.get(gre.DAY_OF_WEEK)-1;  
  11.         String weekDay = null;  
  12.         switch(num){  
  13.         case 0 :  
  14.             weekDay = "星期天";break;  
  15.         case 1 :  
  16.             weekDay = "星期一";break;  
  17.         case 2 :  
  18.             weekDay = "星期二";break;  
  19.         case 3 :  
  20.             weekDay = "星期三";break;  
  21.         case 4 :  
  22.             weekDay = "星期四";break;  
  23.         case 5 :  
  24.             weekDay = "星期五";break;  
  25.         case 6 :  
  26.             weekDay = "星期六";break;        
  27.         }  
  28.         System.out.println("您所输入的"+year+"年"+month+"月"+day+"日"+"是:"+weekDay);  
  29.     }   
  30. }</span>  
<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日是:星期天


本文参考: http://blog.youkuaiyun.com/myjlvzlp/article/details/8065775
http://blog.youkuaiyun.com/playlaugh2011/article/details/6612445
http://blog.sina.com.cn/s/blog_43b943ab01009mc9.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值