Calendar(日历类)

包含功能:
1.获取当前月的上一个月
2.得到当前月的第一天,返回2016-06-01这样的字符串
3.获取当前年的第一个月,返回2016-01这样的数据
4.获取当前年已过的所有季度的集合(季度包含的月份未完则也算入)
5.获取昨天
6.获取指定时间范围内的所有日期
7.获取指定时间范围内的所有月份
8.获取指定日期范围的所有周的周一到周日,格式为周一~周日,如2016-09-19为周一,2016-09-25为周天,返回结果为[2016-09-19~2016-09-25]
9.获取当前日期的前index天(以当前日期开始计算) index = -6表示当天日期的前7天 index =-29表示当前日期的前30天
10.获取当天
11.获取最近3个月开始日期(包含当前月所在月)
12.获取指定日期为星期几
13.获取指定日期所在月的第一天
14.获取指定日期所在月的最后一天
15.获取指定日期所在周的周一

16.获取指定日期所在周的周日

17.获取当前时间到月末的秒数


[java] view plain copy
  1.   
  2.     public static String getLastMonth() {  
  3.         Calendar cal = Calendar.getInstance();  
  4.         cal.add(Calendar.MONTH, -1);  
  5.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");  
  6.         String date = format.format(cal.getTime());  
  7.         return date;  
  8.     }  
  9.   
  10.       
  11.     public static String getCurrentMonthFirstDay() {  
  12.         Calendar c = Calendar.getInstance();  
  13.         c.add(Calendar.MONTH, 0);  
  14.         c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天  
  15.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
  16.         String first = format.format(c.getTime());  
  17.         return first;  
  18.     }  
  19.   
  20.     public static String getCurrentMonthTheLastDay() {  
  21.         Calendar c = Calendar.getInstance();  
  22.         c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));  
  23.         return dateToStr(c.getTime(), "yyyy-MM-dd");  
  24.     }  
  25.   
  26.       
  27.     public static String getCurrentYearFirstMonth() {  
  28.         Calendar c = Calendar.getInstance();  
  29.         c.add(Calendar.YEAR, 0);  
  30.         c.set(Calendar.DAY_OF_YEAR, 1);  
  31.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");  
  32.         String first = format.format(c.getTime());  
  33.         return first;  
  34.     }  
  35.   
  36.       
  37.     public static List getAllQuarterOfThisYear() {  
  38.         List quarters = new ArrayList();  
  39.         Calendar cal = Calendar.getInstance();  
  40.         int year = cal.get(Calendar.YEAR);  
  41.         int month = cal.get(Calendar.MONTH) + 1;  
  42.         if (month > 9) {  
  43.             quarters.add(year + "-" + 1);  
  44.             quarters.add(year + "-" + 2);  
  45.             quarters.add(year + "-" + 3);  
  46.             quarters.add(year + "-" + 4);  
  47.             return quarters;  
  48.         }  
  49.         if (month > 6 && month <= 9) {  
  50.             quarters.add(year + "-" + 1);  
  51.             quarters.add(year + "-" + 2);  
  52.             quarters.add(year + "-" + 3);  
  53.             return quarters;  
  54.         }  
  55.         if (month > 3 && month <= 6) {  
  56.             quarters.add(year + "-" + 1);  
  57.             quarters.add(year + "-" + 2);  
  58.             return quarters;  
  59.         }  
  60.         if (month >= 1 && month <= 3) {  
  61.             quarters.add(year + "-" + 1);  
  62.             return quarters;  
  63.         }  
  64.         return null;  
  65.     }  
  66.   
  67.       
  68.     public static String getYesterDay() {  
  69.         Calendar cal = Calendar.getInstance();  
  70.         cal.add(Calendar.DATE, -1);  
  71.         String yesterday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());  
  72.         return yesterday;  
  73.     }  
  74.   
  75.       
  76.     public static List getDaysBetween(String startDate, String endDate) {  
  77.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
  78.         List result = new ArrayList();  
  79.         result.add(startDate);  
  80.         try {  
  81.             Calendar calBegin = Calendar.getInstance();  
  82.             // 使用给定的 Date 设置此 Calendar 的时间  
  83.             Date begin = format.parse(startDate);  
  84.             calBegin.setTime(begin);  
  85.             Calendar calEnd = Calendar.getInstance();  
  86.             // 使用给定的 Date 设置此 Calendar 的时间  
  87.             Date end = format.parse(endDate);  
  88.             calEnd.setTime(end);  
  89.             // 测试此日期是否在指定日期之后  
  90.             while (end.after(calBegin.getTime())) {  
  91.                 // 根据日历的规则,为给定的日历字段添加或减去指定的时间量  
  92.                 calBegin.add(Calendar.DAY_OF_MONTH, 1);  
  93.                 result.add(format.format(calBegin.getTime()));  
  94.             }  
  95.         } catch (Exception e) {  
  96.             e.printStackTrace();  
  97.         }  
  98.         return result;  
  99.     }  
  100.   
  101.       
  102.     public static List getMonthsBetween(String startDate, String endDate) {  
  103.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");  
  104.         List result = new ArrayList();  
  105.         try {  
  106.             Calendar calBegin = Calendar.getInstance();  
  107.             Calendar calEnd = Calendar.getInstance();  
  108.             calBegin.setTime(sdf.parse(startDate));  
  109.             calBegin.set(calBegin.get(Calendar.YEAR), calBegin.get(Calendar.MONTH), 1);  
  110.             calEnd.setTime(sdf.parse(endDate));  
  111.             calEnd.set(calEnd.get(Calendar.YEAR), calEnd.get(Calendar.MONTH), 2);  
  112.             Calendar curr = calBegin;  
  113.             while (curr.before(calEnd)) {  
  114.                 result.add(sdf.format(curr.getTime()));  
  115.                 curr.add(Calendar.MONTH, 1);  
  116.             }  
  117.         } catch (Exception e) {  
  118.             e.printStackTrace();  
  119.         }  
  120.         return result;  
  121.     }  
  122.   
  123.       
  124.     public static List getWeeksBetween(String startDate, String endDate) {  
  125.         // startDate不能大于endDate  
  126.         List result = new ArrayList();  
  127.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式  
  128.         try {  
  129.             Calendar calBegin = Calendar.getInstance();  
  130.             // 使用给定的 Date 设置此 Calendar 的时间  
  131.             Date begin = sdf.parse(startDate);  
  132.             calBegin.setTime(begin);  
  133.             int dayWeek = calBegin.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天  
  134.             if (1 == dayWeek) {  
  135.                 calBegin.add(Calendar.DAY_OF_MONTH, -1);  
  136.             }  
  137.             calBegin.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一  
  138.             Calendar calEnd = Calendar.getInstance();  
  139.             // 使用给定的 Date 设置此 Calendar 的时间  
  140.             Date end = sdf.parse(endDate);  
  141.             calEnd.setTime(end);  
  142.             // 测试此日期是否在指定日期之后  
  143.             while (end.after(calBegin.getTime())) {  
  144.                 // 根据日历的规则,为给定的日历字段添加或减去指定的时间量  
  145.                 calBegin.add(Calendar.DAY_OF_MONTH, 1);  
  146.                 int day = calBegin.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天  
  147.                 calBegin.add(Calendar.DATE, calBegin.getFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值  
  148.                 // 获取周一  
  149.                 String monday = sdf.format(calBegin.getTime());  
  150.                 calBegin.add(Calendar.DATE, 6);  
  151.                 // 获取周日  
  152.                 String sunday = sdf.format(calBegin.getTime());  
  153.                 result.add(monday + "~" + sunday);  
  154.             }  
  155.         } catch (Exception e) {  
  156.             e.printStackTrace();  
  157.         }  
  158.         return result;  
  159.     }  
  160.   
  161.       
  162.     public static String getLastIndexDayStr(int index) {  
  163.         Date now = new Date();  
  164.         Calendar c = Calendar.getInstance();  
  165.         c.setTime(now);  
  166.         c.add(Calendar.DAY_OF_MONTH, index);  
  167.         return dateToStr(c.getTime(), "yyyy-MM-dd");  
  168.     }  
  169.   
  170.       
  171.     public static String getTodayStr() {  
  172.         Date now = new Date();  
  173.         return dateToStr(now, "yyyy-MM-dd");  
  174.     }  
  175.   
  176.       
  177.     public static String getLast3MonthsStartDateStr() {  
  178.         Date now = new Date();  
  179.         Calendar c = Calendar.getInstance();  
  180.         c.setTime(now);  
  181.         c.add(Calendar.MONTH, -2);  
  182.         return dateToStr(c.getTime(), "yyyy-MM") + "-01";  
  183.     }  
  184.   
  185.       
  186.     public static String getWeekNameOfDate(String dateStr) {  
  187.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
  188.         Calendar c = Calendar.getInstance();  
  189.         try {  
  190.             c.setTime(format.parse(dateStr));  
  191.         } catch (ParseException e) {  
  192.             e.printStackTrace();  
  193.         }  
  194.         int dayForWeek = 0;  
  195.         if (c.get(Calendar.DAY_OF_WEEK) == 1) {  
  196.             dayForWeek = 7;  
  197.         } else {  
  198.             dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;  
  199.         }  
  200.         String result = "";  
  201.         switch (dayForWeek) {  
  202.         case 1:  
  203.             result = "星期一";  
  204.             break;  
  205.         case 2:  
  206.             result = "星期二";  
  207.             break;  
  208.         case 3:  
  209.             result = "星期三";  
  210.             break;  
  211.         case 4:  
  212.             result = "星期四";  
  213.             break;  
  214.         case 5:  
  215.             result = "星期五";  
  216.             break;  
  217.         case 6:  
  218.             result = "星期六";  
  219.             break;  
  220.         case 7:  
  221.             result = "星期天";  
  222.             break;  
  223.         }  
  224.         return result;  
  225.     }  
  226.   
  227.       
  228.     public static String getMonthStartDate(String date) {  
  229.         try {  
  230.             Calendar calendar = Calendar.getInstance();  
  231.             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
  232.             calendar.setTime(format.parse(date));  
  233.             calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));  
  234.             return format.format(calendar.getTime());  
  235.         } catch (ParseException e) {  
  236.             e.printStackTrace();  
  237.         }  
  238.         return null;  
  239.     }  
  240.   
  241.       
  242.     public static String getMonthEndDate(String date) {  
  243.         try {  
  244.             Calendar calendar = Calendar.getInstance();  
  245.             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
  246.             calendar.setTime(format.parse(date));  
  247.             calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  248.             return format.format(calendar.getTime());  
  249.         } catch (ParseException e) {  
  250.             e.printStackTrace();  
  251.         }  
  252.         return null;  
  253.     }  
  254.   
  255.       
  256.     public static String getMondayOfDate(String date) {  
  257.         try {  
  258.             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式  
  259.             Calendar cal = Calendar.getInstance();  
  260.             cal.setTime(sdf.parse(date));  
  261.             int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天  
  262.             if (1 == dayWeek) {  
  263.                 cal.add(Calendar.DAY_OF_MONTH, -1);  
  264.             }  
  265.             cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一  
  266.             int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天  
  267.             cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);  
  268.             return sdf.format(cal.getTime());  
  269.         } catch (ParseException e) {  
  270.             e.printStackTrace();  
  271.         }  
  272.         return null;  
  273.     }  
  274.   
  275.       
  276.     public static String getSundayOfDate(String date) {  
  277.         try {  
  278.             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式  
  279.             Calendar cal = Calendar.getInstance();  
  280.             cal.setTime(sdf.parse(date));  
  281.             int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天  
  282.             if (1 == dayWeek) {  
  283.                 cal.add(Calendar.DAY_OF_MONTH, -1);  
  284.             }  
  285.             cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一  
  286.             int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天  
  287.             cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值   
  288.             cal.add(Calendar.DATE, 6);  
  289.             return sdf.format(cal.getTime());  
  290.         } catch (ParseException e) {  
  291.             e.printStackTrace();  
  292.         }  
  293.         return null;  
  294.     } 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值