`

聊一聊Calendar的使用

    博客分类:
  • java
 
阅读更多

  在令人头痛的日期处理中,我们是否发现了那强大的Calendar,学习到这个类,感觉强大无比,特记录下

package com.iceStudy.util;

import java.util.Calendar;
import java.util.Date;
import static java.util.Calendar.*;

public class CalendarStudy {
    Calendar cal=Calendar.getInstance();
	public static void main(String[] args) {
		CalendarStudy cals=new CalendarStudy();
		cals.show();
			}
    /**
     * static int ALL_STYLES           指示所有风格名称的 getDisplayNames 的风格说明符,比如 "January" 和 "Jan"。 
	   static int AM           指示从午夜到中午之前这段时间的 AM_PM 字段值。 
static int AM_PM           get 和 set 的字段数字,指示 HOUR 是在中午之前还是在中午之后。 
static int APRIL           指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。 
protected  boolean areFieldsSet           如果 fields[] 与当前的设置时间同步,则返回 true。 
static int AUGUST           指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。 
static int DATE           get 和 set 的字段数字,指示一个月中的某天。 
static int DAY_OF_MONTH           get 和 set 的字段数字,指示一个月中的某天。 
static int DAY_OF_WEEK           get 和 set 的字段数字,指示一个星期中的某天。 
static int DAY_OF_WEEK_IN_MONTH           get 和 set 的字段数字,指示当前月中的第几个星期。 
static int DAY_OF_YEAR           get 和 set 的字段数字,指示当前年中的天数。 
static int DECEMBER           指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。 
static int DST_OFFSET           get 和 set 的字段数字,以毫秒为单位指示夏令时的偏移量。 
static int ERA           指示年代的 get 和 set 的字段数字,比如罗马儒略历中的 AD 或 BC。 
static int FEBRUARY           指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。 
static int FIELD_COUNT           get 和 set 可识别的不同字段的数量。 
protected  int[] fields           此日历当前设置时间的日历字段值。 
static int FRIDAY           指示 Friday 的 DAY_OF_WEEK 字段值。 
static int HOUR           get 和 set 的字段数字,指示上午或下午的小时。 
static int HOUR_OF_DAY           get 和 set 的字段数字,指示一天中的小时。 
protected  boolean[] isSet           通知是否设置了该日历某一指定日历字段的标志。 
protected  boolean isTimeSet           如果 time 值是一个有效值,则返回 true。 
static int JANUARY           指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。 
static int JULY           指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。 
static int JUNE           指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。 
static int LONG           指示长名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "January"。 
static int MARCH           指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。 
static int MAY           指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值。 
static int MILLISECOND           get 和 set 的字段数字,指示一秒中的毫秒。 
static int MINUTE           get 和 set 的字段数字,指示一小时中的分钟。 
static int MONDAY           指示 Monday 的 DAY_OF_WEEK 字段值。 
static int MONTH           指示月份的 get 和 set 的字段数字。 
static int NOVEMBER           指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。 
static int OCTOBER           指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。 
static int PM           指示从中午到午夜之前这段时间的 AM_PM 字段值。 
static int SATURDAY           指示 Saturday 的 DAY_OF_WEEK 字段值。 
static int SECOND           get 和 set 的字段数字,指示一分钟中的秒。 
static int SEPTEMBER           指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。 
static int SHORT           指示短名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "Jan"。 
static int SUNDAY           指示 Sunday 的 DAY_OF_WEEK 字段值。 
static int THURSDAY           指示 Thursday 的 DAY_OF_WEEK 字段值。 
protected  long time           日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。 
static int TUESDAY           指示 Tuesday 的 DAY_OF_WEEK 字段值。 
static int UNDECIMBER           指示一年中第十三个月的 MONTH 字段值。 
static int WEDNESDAY           指示 Wednesday 的 DAY_OF_WEEK 字段值。 
static int WEEK_OF_MONTH           get 和 set 的字段数字,指示当前月中的星期数。 
static int WEEK_OF_YEAR           get 和 set 的字段数字,指示当前年中的星期数。 
static int YEAR           指示年的 get 和 set 的字段数字。 
static int ZONE_OFFSET           get 和 set 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。 
 
     */
	public void show(){
		//cal.setTime(new Date());//设置时间为今天
		System.out.println("年"+cal.get(YEAR));//使用了静态导入,所以省略了Calendar名字,全称应为Calendar.YEAR
		System.out.println("月"+cal.get(MONTH));
		System.out.println("日"+cal.get(DAY_OF_MONTH));
		System.out.println("时"+cal.get(HOUR_OF_DAY));
		System.out.println("分"+cal.get(MINUTE));
		System.out.println("秒"+cal.get(SECOND));
		
		cal.setTime(new Date());//与传统的date互换,很方便
		Date date=cal.getTime();
		
		//cal.set(year, month, date, hourOfDay, minute)//可以自由设置指定时间
		
		cal.add(DAY_OF_MONTH, 1);//灵活而好用的一个方法,可以自由的选择加减那个字段,可以构造出很多实用的应用。
		
		System.out.println("改变后的"+cal.get(DAY_OF_MONTH));
		
		cal.set(DAY_OF_WEEK, MONDAY);//同样令活儿好用的方法,可以实现很多功能,例如得到本周一日期,由此发散开,几乎应用太广了
	    
		System.out.println("改变后的"+cal.get(DAY_OF_MONTH));
		
		//复杂一些,得到今年二月的第二个星期周5的日期
		
		cal.set(MONTH, 2);
		cal.set(WEEK_OF_MONTH, 2);
		cal.set(DAY_OF_WEEK_IN_MONTH, FRIDAY);
		
		System.out.println("改变后的"+cal.get(DAY_OF_MONTH));
		
		//获取下月第一天日期 ps:我看je上有人自己写的方法,我觉得能比较好的体现出add和set的巧妙
		Calendar lastDate = Calendar.getInstance();   
		lastDate.add(MONTH,1);//加一个月   
	    lastDate.set(DAY_OF_MONTH, 1);//把日期设置为当月第一天    
	    System.out.println("改变后的"+lastDate.get(DAY_OF_MONTH));
		  
		
		// 计算当月最后一天,返回字符串   
		 lastDate = Calendar.getInstance();   
	     lastDate.set(DAY_OF_MONTH,1);//设为当前月的1号   
	     lastDate.add(MONTH,1);//加一个月,变为下月的1号   
	     lastDate.add(DAY_OF_MONTH,-1);//减去一天,变为当月最后一天   
	     System.out.println("改变后的"+lastDate.get(DAY_OF_MONTH));
			
	     
	     
	     //总结强大的add,set,注意他们可以正负操作,如果是关于从今天开始的某个特殊时间则add是不错的选择,如果是固定时间的选择set则很好的帮助我们,
	     //更多的时候,则是add和set共同作用,配合那些强大的字段,Calendar必将解放我们的痛苦思维。
	}
}

 

 

附件是java 文件,更多的用法,更灵活的使用,就要靠大家对那些字段的认知了

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics