Android Calendar的学习与运用

  1. import java.text.DateFormat;  
  2. import java.text.ParsePosition;  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Calendar;  
  5. import java.util.Date;  
  6. import java.util.GregorianCalendar;  
  7.   
  8. /** 
  9.  * Android Calendar的运用 
  10.  * @author Administrator 
  11.  * 
  12.  */  
  13. public class CalendarUtil {  
  14.   
  15.     private int weeks = 0;// 用来全局控制 上一周,本周,下一周的周数变化  
  16.     private int MaxDate; // 一月最大天数  
  17.     private int MaxYear; // 一年最大天数  
  18.       
  19.     public static void main(String[] args) {  
  20.         CalendarUtil tt = new CalendarUtil();  
  21.         System.out.println("获取当天日期:" + tt.getNowTime("yyyy-MM-dd"));  
  22.         System.out.println("获取本周一日期:" + tt.getMondayOFWeek());  
  23.         System.out.println("获取本周日的日期:" + tt.getCurrentWeekday());  
  24.         System.out.println("获取上周一日期:" + tt.getPreviousWeekday());  
  25.         System.out.println("获取上周日日期:" + tt.getPreviousWeekSunday());  
  26.         System.out.println("获取下周一日期:" + tt.getNextMonday());  
  27.         System.out.println("获取下周日日期:" + tt.getNextSunday());  
  28.         System.out.println("获得相应周的周六的日期:" + tt.getNowTime("yyyy-MM-dd"));  
  29.         System.out.println("获取本月第一天日期:" + tt.getFirstDayOfMonth());  
  30.         System.out.println("获取本月最后一天日期:" + tt.getDefaultDay());  
  31.         System.out.println("获取上月第一天日期:" + tt.getPreviousMonthFirst());  
  32.         System.out.println("获取上月最后一天的日期:" + tt.getPreviousMonthEnd());  
  33.         System.out.println("获取下月第一天日期:" + tt.getNextMonthFirst());  
  34.         System.out.println("获取下月最后一天日期:" + tt.getNextMonthEnd());  
  35.         System.out.println("获取本年的第一天日期:" + tt.getCurrentYearFirst());  
  36.         System.out.println("获取本年最后一天日期:" + tt.getCurrentYearEnd());  
  37.         System.out.println("获取去年的第一天日期:" + tt.getPreviousYearFirst());  
  38.         System.out.println("获取去年的最后一天日期:" + tt.getPreviousYearEnd());  
  39.         System.out.println("获取明年第一天日期:" + tt.getNextYearFirst());  
  40.         System.out.println("获取明年最后一天日期:" + tt.getNextYearEnd());  
  41.         System.out.println("获取本季度第一天:" + tt.getThisSeasonFirstTime(11));  
  42.         System.out.println("获取本季度最后一天:" + tt.getThisSeasonFinallyTime(11));  
  43.         System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"  
  44.                 + CalendarUtil.getTwoDay("2008-12-1""2008-9-29"));  
  45.         System.out.println("获取当前月的第几周:" + tt.getWeekOfMonth());  
  46.         System.out.println("获取当前年份:" + tt.getYear());  
  47.         System.out.println("获取当前月份:" + tt.getMonth());  
  48.         System.out.println("获取今天在本年的第几天:" + tt.getDayOfYear());  
  49.         System.out.println("获得今天在本月的第几天(获得当前日):" + tt.getDayOfMonth());  
  50.         System.out.println("获得今天在本周的第几天:" + tt.getDayOfWeek());  
  51.         System.out.println("获得半年后的日期:"  
  52.                 + tt.convertDateToString(tt.getTimeYearNext()));  
  53.     }  
  54.   
  55.       
  56.     public static int getYear() {  
  57.         return Calendar.getInstance().get(Calendar.YEAR);  
  58.     }  
  59.   
  60.       
  61.     public static int getMonth() {  
  62.         return Calendar.getInstance().get(Calendar.MONTH) + 1;  
  63.     }  
  64.   
  65.       
  66.     public static int getDayOfYear() {  
  67.         return Calendar.getInstance().get(Calendar.DAY_OF_YEAR);  
  68.     }  
  69.   
  70.       
  71.     public static int getDayOfMonth() {  
  72.         return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);  
  73.     }  
  74.   
  75.       
  76.     public static int getDayOfWeek() {  
  77.         return Calendar.getInstance().get(Calendar.DAY_OF_WEEK);  
  78.     }  
  79.   
  80.       
  81.     public static int getWeekOfMonth() {  
  82.         return Calendar.getInstance().get(Calendar.DAY_OF_WEEK_IN_MONTH);  
  83.     }  
  84.   
  85.       
  86.     public static Date getTimeYearNext() {  
  87.         Calendar.getInstance().add(Calendar.DAY_OF_YEAR, 183);  
  88.         return Calendar.getInstance().getTime();  
  89.     }  
  90.   
  91.       
  92.     public static String convertDateToString(Date dateTime) {  
  93.         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
  94.         return df.format(dateTime);  
  95.     }  
  96.   
  97.       
  98.     public static String getTwoDay(String sj1, String sj2) {  
  99.         SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");  
  100.         long day = 0;  
  101.         try {  
  102.             java.util.Date date = myFormatter.parse(sj1);  
  103.             java.util.Date mydate = myFormatter.parse(sj2);  
  104.             day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);  
  105.         } catch (Exception e) {  
  106.             return "";  
  107.         }  
  108.         return day + "";  
  109.     }  
  110.   
  111.       
  112.     public static String getWeek(String sdate) {  
  113.         // 再转换为时间  
  114.         Date date = CalendarUtil.strToDate(sdate);  
  115.         Calendar c = Calendar.getInstance();  
  116.         c.setTime(date);  
  117.         // int hour=c.get(Calendar.DAY_OF_WEEK);  
  118.         // hour中存的就是星期几了,其范围 1~7  
  119.         // 1=星期日 7=星期六,其他类推  
  120.         return new SimpleDateFormat("EEEE").format(c.getTime());  
  121.     }  
  122.   
  123.       
  124.     public static Date strToDate(String strDate) {  
  125.         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");  
  126.         ParsePosition pos = new ParsePosition(0);  
  127.         Date strtodate = formatter.parse(strDate, pos);  
  128.         return strtodate;  
  129.     }  
  130.   
  131.       
  132.     public static long getDays(String date1, String date2) {  
  133.         if (date1 == null || date1.equals(""))  
  134.             return 0;  
  135.         if (date2 == null || date2.equals(""))  
  136.             return 0;  
  137.         // 转换为标准时间  
  138.         SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");  
  139.         java.util.Date date = null;  
  140.         java.util.Date mydate = null;  
  141.         try {  
  142.             date = myFormatter.parse(date1);  
  143.             mydate = myFormatter.parse(date2);  
  144.         } catch (Exception e) {  
  145.         }  
  146.         long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);  
  147.         return day;  
  148.     }  
  149.   
  150.       
  151.     public String getDefaultDay() {  
  152.         String str = "";  
  153.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  154.   
  155.         Calendar lastDate = Calendar.getInstance();  
  156.         lastDate.set(Calendar.DATE, 1);// 设为当前月的1号  
  157.         lastDate.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号  
  158.         lastDate.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天  
  159.   
  160.         str = sdf.format(lastDate.getTime());  
  161.         return str;  
  162.     }  
  163.   
  164.       
  165.     public String getPreviousMonthFirst() {  
  166.         String str = "";  
  167.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  168.   
  169.         Calendar lastDate = Calendar.getInstance();  
  170.         lastDate.set(Calendar.DATE, 1);// 设为当前月的1号  
  171.         lastDate.add(Calendar.MONTH, -1);// 减一个月,变为下月的1号  
  172.         // lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天  
  173.   
  174.         str = sdf.format(lastDate.getTime());  
  175.         return str;  
  176.     }  
  177.   
  178.       
  179.     public String getFirstDayOfMonth() {  
  180.         String str = "";  
  181.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  182.   
  183.         Calendar lastDate = Calendar.getInstance();  
  184.         lastDate.set(Calendar.DATE, 1);// 设为当前月的1号  
  185.         str = sdf.format(lastDate.getTime());  
  186.         return str;  
  187.     }  
  188.   
  189.       
  190.     public String getCurrentWeekday() {  
  191.         weeks = 0;  
  192.         int mondayPlus = this.getMondayPlus();  
  193.         GregorianCalendar currentDate = new GregorianCalendar();  
  194.         currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);  
  195.         Date monday = currentDate.getTime();  
  196.   
  197.         DateFormat df = DateFormat.getDateInstance();  
  198.         String preMonday = df.format(monday);  
  199.         return preMonday;  
  200.     }  
  201.   
  202.       
  203.     public String getNowTime(String dateformat) {  
  204.         Date now = new Date();  
  205.         SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式  
  206.         String hehe = dateFormat.format(now);  
  207.         return hehe;  
  208.     }  
  209.   
  210.       
  211.     private int getMondayPlus() {  
  212.         Calendar cd = Calendar.getInstance();  
  213.         // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......  
  214.         int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1// 因为按中国礼拜一作为第一天所以这里减1  
  215.         if (dayOfWeek == 1) {  
  216.             return 0;  
  217.         } else {  
  218.             return 1 - dayOfWeek;  
  219.         }  
  220.     }  
  221.   
  222.       
  223.     public String getMondayOFWeek() {  
  224.         weeks = 0;  
  225.         int mondayPlus = this.getMondayPlus();  
  226.         GregorianCalendar currentDate = new GregorianCalendar();  
  227.         currentDate.add(GregorianCalendar.DATE, mondayPlus);  
  228.         Date monday = currentDate.getTime();  
  229.   
  230.         DateFormat df = DateFormat.getDateInstance();  
  231.         String preMonday = df.format(monday);  
  232.         return preMonday;  
  233.     }  
  234.   
  235.       
  236.     public String getSaturday() {  
  237.         int mondayPlus = this.getMondayPlus();  
  238.         GregorianCalendar currentDate = new GregorianCalendar();  
  239.         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);  
  240.         Date monday = currentDate.getTime();  
  241.         DateFormat df = DateFormat.getDateInstance();  
  242.         String preMonday = df.format(monday);  
  243.         return preMonday;  
  244.     }  
  245.   
  246.       
  247.     public String getPreviousWeekSunday() {  
  248.         weeks = 0;  
  249.         weeks--;  
  250.         int mondayPlus = this.getMondayPlus();  
  251.         GregorianCalendar currentDate = new GregorianCalendar();  
  252.         currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);  
  253.         Date monday = currentDate.getTime();  
  254.         DateFormat df = DateFormat.getDateInstance();  
  255.         String preMonday = df.format(monday);  
  256.         return preMonday;  
  257.     }  
  258.   
  259.       
  260.     public String getPreviousWeekday() {  
  261.         weeks--;  
  262.         int mondayPlus = this.getMondayPlus();  
  263.         GregorianCalendar currentDate = new GregorianCalendar();  
  264.         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);  
  265.         Date monday = currentDate.getTime();  
  266.         DateFormat df = DateFormat.getDateInstance();  
  267.         String preMonday = df.format(monday);  
  268.         return preMonday;  
  269.     }  
  270.   
  271.       
  272.     public String getNextMonday() {  
  273.         weeks++;  
  274.         int mondayPlus = this.getMondayPlus();  
  275.         GregorianCalendar currentDate = new GregorianCalendar();  
  276.         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);  
  277.         Date monday = currentDate.getTime();  
  278.         DateFormat df = DateFormat.getDateInstance();  
  279.         String preMonday = df.format(monday);  
  280.         return preMonday;  
  281.     }  
  282.   
  283.       
  284.     public String getNextSunday() {  
  285.   
  286.         int mondayPlus = this.getMondayPlus();  
  287.         GregorianCalendar currentDate = new GregorianCalendar();  
  288.         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 + 6);  
  289.         Date monday = currentDate.getTime();  
  290.         DateFormat df = DateFormat.getDateInstance();  
  291.         String preMonday = df.format(monday);  
  292.         return preMonday;  
  293.     }  
  294.   
  295.     private int getMonthPlus() {  
  296.         Calendar cd = Calendar.getInstance();  
  297.         int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH);  
  298.         cd.set(Calendar.DATE, 1);// 把日期设置为当月第一天  
  299.         cd.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天  
  300.         MaxDate = cd.get(Calendar.DATE);  
  301.         if (monthOfNumber == 1) {  
  302.             return -MaxDate;  
  303.         } else {  
  304.             return 1 - monthOfNumber;  
  305.         }  
  306.     }  
  307.   
  308.       
  309.     public String getPreviousMonthEnd() {  
  310.         String str = "";  
  311.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  312.   
  313.         Calendar lastDate = Calendar.getInstance();  
  314.         lastDate.add(Calendar.MONTH, -1);// 减一个月  
  315.         lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天  
  316.         lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天  
  317.         str = sdf.format(lastDate.getTime());  
  318.         return str;  
  319.     }  
  320.   
  321.       
  322.     public String getNextMonthFirst() {  
  323.         String str = "";  
  324.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  325.   
  326.         Calendar lastDate = Calendar.getInstance();  
  327.         lastDate.add(Calendar.MONTH, 1);// 减一个月  
  328.         lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天  
  329.         str = sdf.format(lastDate.getTime());  
  330.         return str;  
  331.     }  
  332.   
  333.       
  334.     public String getNextMonthEnd() {  
  335.         String str = "";  
  336.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  337.   
  338.         Calendar lastDate = Calendar.getInstance();  
  339.         lastDate.add(Calendar.MONTH, 1);// 加一个月  
  340.         lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天  
  341.         lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天  
  342.         str = sdf.format(lastDate.getTime());  
  343.         return str;  
  344.     }  
  345.   
  346.       
  347.     public String getNextYearEnd() {  
  348.         String str = "";  
  349.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  350.   
  351.         Calendar lastDate = Calendar.getInstance();  
  352.         lastDate.add(Calendar.YEAR, 1);// 加一个年  
  353.         lastDate.set(Calendar.DAY_OF_YEAR, 1);  
  354.         lastDate.roll(Calendar.DAY_OF_YEAR, -1);  
  355.         str = sdf.format(lastDate.getTime());  
  356.         return str;  
  357.     }  
  358.   
  359.       
  360.     public String getNextYearFirst() {  
  361.         String str = "";  
  362.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  363.   
  364.         Calendar lastDate = Calendar.getInstance();  
  365.         lastDate.add(Calendar.YEAR, 1);// 加一个年  
  366.         lastDate.set(Calendar.DAY_OF_YEAR, 1);  
  367.         str = sdf.format(lastDate.getTime());  
  368.         return str;  
  369.   
  370.     }  
  371.   
  372.       
  373.     private int getMaxYear() {  
  374.         Calendar cd = Calendar.getInstance();  
  375.         cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天  
  376.         cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。  
  377.         int MaxYear = cd.get(Calendar.DAY_OF_YEAR);  
  378.         return MaxYear;  
  379.     }  
  380.   
  381.     private int getYearPlus() {  
  382.         Calendar cd = Calendar.getInstance();  
  383.         int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);// 获得当天是一年中的第几天  
  384.         cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天  
  385.         cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。  
  386.         int MaxYear = cd.get(Calendar.DAY_OF_YEAR);  
  387.         if (yearOfNumber == 1) {  
  388.             return -MaxYear;  
  389.         } else {  
  390.             return 1 - yearOfNumber;  
  391.         }  
  392.     }  
  393.   
  394.       
  395.     public String getCurrentYearFirst() {  
  396.         int yearPlus = this.getYearPlus();  
  397.         GregorianCalendar currentDate = new GregorianCalendar();  
  398.         currentDate.add(GregorianCalendar.DATE, yearPlus);  
  399.         Date yearDay = currentDate.getTime();  
  400.         DateFormat df = DateFormat.getDateInstance();  
  401.         String preYearDay = df.format(yearDay);  
  402.         return preYearDay;  
  403.     }  
  404.   
  405.     // 获得本年最后一天的日期 *  
  406.     public String getCurrentYearEnd() {  
  407.         Date date = new Date();  
  408.         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式  
  409.         String years = dateFormat.format(date);  
  410.         return years + "-12-31";  
  411.     }  
  412.   
  413.     // 获得上年第一天的日期 *  
  414.     public String getPreviousYearFirst() {  
  415.         Date date = new Date();  
  416.         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式  
  417.         String years = dateFormat.format(date);  
  418.         int years_value = Integer.parseInt(years);  
  419.         years_value--;  
  420.         return years_value + "-1-1";  
  421.     }  
  422.   
  423.     // 获得上年最后一天的日期  
  424.     public String getPreviousYearEnd() {  
  425.         weeks--;  
  426.         int yearPlus = this.getYearPlus();  
  427.         GregorianCalendar currentDate = new GregorianCalendar();  
  428.         currentDate.add(GregorianCalendar.DATE, yearPlus + MaxYear * weeks  
  429.                 + (MaxYear - 1));  
  430.         Date yearDay = currentDate.getTime();  
  431.         DateFormat df = DateFormat.getDateInstance();  
  432.         String preYearDay = df.format(yearDay);  
  433.         return preYearDay;  
  434.     }  
  435.   
  436.       
  437.     public String getThisSeasonFirstTime(int month) {  
  438.         int array[][] = { { 123 }, { 456 }, { 789 }, { 101112 } };  
  439.         int season = 1;  
  440.         if (month >= 1 && month <= 3) {  
  441.             season = 1;  
  442.         }  
  443.         if (month >= 4 && month <= 6) {  
  444.             season = 2;  
  445.         }  
  446.         if (month >= 7 && month <= 9) {  
  447.             season = 3;  
  448.         }  
  449.         if (month >= 10 && month <= 12) {  
  450.             season = 4;  
  451.         }  
  452.         int start_month = array[season - 1][0];  
  453.         int end_month = array[season - 1][2];  
  454.   
  455.         Date date = new Date();  
  456.         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式  
  457.         String years = dateFormat.format(date);  
  458.         int years_value = Integer.parseInt(years);  
  459.   
  460.         int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);  
  461.         int end_days = getLastDayOfMonth(years_value, end_month);  
  462.         String seasonDate = years_value + "-" + start_month + "-" + start_days;  
  463.         return seasonDate;  
  464.   
  465.     }  
  466.   
  467.       
  468.     public String getThisSeasonFinallyTime(int month) {  
  469.         int array[][] = { { 123 }, { 456 }, { 789 }, { 101112 } };  
  470.         int season = 1;  
  471.         if (month >= 1 && month <= 3) {  
  472.             season = 1;  
  473.         }  
  474.         if (month >= 4 && month <= 6) {  
  475.             season = 2;  
  476.         }  
  477.         if (month >= 7 && month <= 9) {  
  478.             season = 3;  
  479.         }  
  480.         if (month >= 10 && month <= 12) {  
  481.             season = 4;  
  482.         }  
  483.         int start_month = array[season - 1][0];  
  484.         int end_month = array[season - 1][2];  
  485.   
  486.         Date date = new Date();  
  487.         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式  
  488.         String years = dateFormat.format(date);  
  489.         int years_value = Integer.parseInt(years);  
  490.   
  491.         int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);  
  492.         int end_days = getLastDayOfMonth(years_value, end_month);  
  493.         String seasonDate = years_value + "-" + end_month + "-" + end_days;  
  494.         return seasonDate;  
  495.   
  496.     }  
  497.   
  498.       
  499.     private int getLastDayOfMonth(int year, int month) {  
  500.         if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8  
  501.                 || month == 10 || month == 12) {  
  502.             return 31;  
  503.         }  
  504.         if (month == 4 || month == 6 || month == 9 || month == 11) {  
  505.             return 30;  
  506.         }  
  507.         if (month == 2) {  
  508.             if (isLeapYear(year)) {  
  509.                 return 29;  
  510.             } else {  
  511.                 return 28;  
  512.             }  
  513.         }  
  514.         return 0;  
  515.     }  
  516.   
  517.       
  518.     public boolean isLeapYear(int year) {  
  519.         return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);  
  520.     }  
  521.   
  522.       
  523.     public boolean isLeapYear2(int year) {  
  524.         return new GregorianCalendar().isLeapYear(year);  
  525.     }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值