Java获取时间范围: 当前季度,上个季度,昨天,当前月,上个月



[java]  view plain  copy
  1. package top.itart.blog.common.util;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Calendar;  
  5. import java.util.Date;  
  6.   
  7. import top.itart.blog.common.bean.DateRange;  
  8.   
  9. public class DateUtils{  
  10.     /** 
  11.      * 获取date的月份的时间范围 
  12.      * @param date 
  13.      * @return 
  14.      */  
  15.     public static DateRange getMonthRange(Date date) {  
  16.         Calendar startCalendar = Calendar.getInstance();  
  17.         startCalendar.setTime(date);  
  18.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  19.         setMaxTime(startCalendar);  
  20.           
  21.         Calendar endCalendar = Calendar.getInstance();  
  22.         endCalendar.setTime(date);  
  23.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  24.         setMaxTime(endCalendar);  
  25.           
  26.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  27.     }  
  28.     /** 
  29.      * 获取当前季度的时间范围 
  30.      * @return current quarter 
  31.      */  
  32.     public static DateRange getThisQuarter() {  
  33.         Calendar startCalendar = Calendar.getInstance();  
  34.         startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3);  
  35.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  36.         setMinTime(startCalendar);  
  37.           
  38.         Calendar endCalendar = Calendar.getInstance();  
  39.         endCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3 + 2);  
  40.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  41.         setMaxTime(endCalendar);  
  42.           
  43.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  44.     }  
  45.       
  46.     /** 
  47.      * 获取昨天的时间范围 
  48.      * @return 
  49.      */  
  50.     public static DateRange getYesterdayRange() {  
  51.          Calendar startCalendar = Calendar.getInstance();  
  52.          startCalendar.add(Calendar.DAY_OF_MONTH, -1);  
  53.          setMinTime(startCalendar);  
  54.            
  55.          Calendar endCalendar = Calendar.getInstance();  
  56.          endCalendar.add(Calendar.DAY_OF_MONTH, -1);  
  57.          setMaxTime(endCalendar);  
  58.            
  59.          return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  60.     }  
  61.       
  62.     /** 
  63.      * 获取当前月份的时间范围 
  64.      * @return 
  65.      */  
  66.     public static DateRange getThisMonth(){  
  67.         Calendar startCalendar = Calendar.getInstance();  
  68.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  69.         setMinTime(startCalendar);  
  70.           
  71.         Calendar endCalendar = Calendar.getInstance();  
  72.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  73.         setMaxTime(endCalendar);  
  74.           
  75.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  76.     }  
  77.       
  78.     /** 
  79.      * 获取上个月的时间范围 
  80.      * @return 
  81.      */  
  82.     public static DateRange getLastMonth(){  
  83.         Calendar startCalendar = Calendar.getInstance();  
  84.         startCalendar.add(Calendar.MONTH, -1);  
  85.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  86.         setMinTime(startCalendar);  
  87.           
  88.         Calendar endCalendar = Calendar.getInstance();  
  89.         endCalendar.add(Calendar.MONTH, -1);  
  90.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  91.         setMaxTime(endCalendar);  
  92.           
  93.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  94.     }  
  95.       
  96.     /** 
  97.      * 获取上个季度的时间范围 
  98.      * @return 
  99.      */  
  100.     public static DateRange getLastQuarter() {  
  101.         Calendar startCalendar = Calendar.getInstance();  
  102.         startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3);  
  103.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  104.         setMinTime(startCalendar);  
  105.           
  106.         Calendar endCalendar = Calendar.getInstance();  
  107.         endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);  
  108.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  109.         setMaxTime(endCalendar);  
  110.           
  111.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  112.     }  
  113.       
  114.     private static void setMinTime(Calendar calendar){  
  115.         calendar.set(Calendar.HOUR_OF_DAY, 0);  
  116.         calendar.set(Calendar.MINUTE, 0);  
  117.         calendar.set(Calendar.SECOND, 0);  
  118.         calendar.set(Calendar.MILLISECOND, 0);  
  119.     }  
  120.       
  121.     private static void setMaxTime(Calendar calendar){  
  122.         calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));  
  123.         calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));  
  124.         calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));  
  125.         calendar.set(Calendar.MILLISECOND, calendar.getActualMaximum(Calendar.MILLISECOND));  
  126.     }  
  127.       
  128.       
  129.     public final static String DEFAULT_PATTERN = "MM/dd/yyyy HH:mm:ss";  
  130.     public static String format(Date date){  
  131.         SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);  
  132.         return sdf.format(date);  
  133.     }  
  134.       
  135.     public static void main(String[] args) {  
  136.           
  137.         DateRange currentQuarter = getThisQuarter();  
  138.         System.out.println("当前季度的时间范围: "+DateUtilsTemp.format(currentQuarter.getStart())+" - "+DateUtilsTemp.format(currentQuarter.getEnd()));  
  139.           
  140.           
  141.         DateRange yesterdayRange = getYesterdayRange();  
  142.         System.out.println("昨天的时间范围: "+DateUtilsTemp.format(yesterdayRange.getStart())+" - "+DateUtilsTemp.format(yesterdayRange.getEnd()));  
  143.           
  144.         DateRange thisMonth = getThisMonth();  
  145.         System.out.println("当前月份的时间范围: "+DateUtilsTemp.format(thisMonth.getStart())+" - "+DateUtilsTemp.format(thisMonth.getEnd()));  
  146.           
  147.         DateRange lastMonth = getLastMonth();  
  148.         System.out.println("上个月的时间范围: "+DateUtilsTemp.format(lastMonth.getStart())+" - "+DateUtilsTemp.format(lastMonth.getEnd()));  
  149.           
  150.         DateRange lastQuarter = getLastQuarter();  
  151.         System.out.println("上个季度的时间范围: "+DateUtilsTemp.format(lastQuarter.getStart())+" - "+DateUtilsTemp.format(lastQuarter.getEnd()));  
  152.           
  153.     }  
  154. }  
  • DateRange.java
[java]  view plain  copy
  1. package top.itart.blog.common.bean;  
  2.   
  3. import java.util.Date;  
  4.   
  5. public class DateRange {  
  6.     private Date start;  
  7.     private Date end;  
  8.       
  9.     public DateRange(Date start, Date end) {  
  10.         this.start = start;  
  11.         this.end = end;  
  12.     }  
  13.       
  14.     public Date getStart() {  
  15.         return start;  
  16.     }  
  17.     public void setStart(Date start) {  
  18.         this.start = start;  
  19.     }  
  20.     public Date getEnd() {  
  21.         return end;  
  22.     }  
  23.     public void setEnd(Date end) {  
  24.         this.end = end;  
  25.     }  
  26.       
  27. }  

 

如果当前时间是: 2015/09/06, 则运行结果如下:

 

[plain]  view plain  copy
  1. 当前季度的时间范围: 07/01/2015 00:00:00 - 09/30/2015 23:59:59  
  2. 昨天的时间范围: 09/05/2015 00:00:00 - 09/05/2015 23:59:59  
  3. 当前月份的时间范围: 09/01/2015 00:00:00 - 09/30/2015 23:59:59  
  4. 上个月的时间范围: 08/01/2015 00:00:00 - 08/31/2015 23:59:59  
  5. 上个季度的时间范围: 04/01/2015 00:00:00 - 06/30/2015 23:59:59  
[java]  view plain  copy
  1. package top.itart.blog.common.util;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Calendar;  
  5. import java.util.Date;  
  6.   
  7. import top.itart.blog.common.bean.DateRange;  
  8.   
  9. public class DateUtils{  
  10.     /** 
  11.      * 获取date的月份的时间范围 
  12.      * @param date 
  13.      * @return 
  14.      */  
  15.     public static DateRange getMonthRange(Date date) {  
  16.         Calendar startCalendar = Calendar.getInstance();  
  17.         startCalendar.setTime(date);  
  18.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  19.         setMaxTime(startCalendar);  
  20.           
  21.         Calendar endCalendar = Calendar.getInstance();  
  22.         endCalendar.setTime(date);  
  23.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  24.         setMaxTime(endCalendar);  
  25.           
  26.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  27.     }  
  28.     /** 
  29.      * 获取当前季度的时间范围 
  30.      * @return current quarter 
  31.      */  
  32.     public static DateRange getThisQuarter() {  
  33.         Calendar startCalendar = Calendar.getInstance();  
  34.         startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3);  
  35.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  36.         setMinTime(startCalendar);  
  37.           
  38.         Calendar endCalendar = Calendar.getInstance();  
  39.         endCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3) * 3 + 2);  
  40.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  41.         setMaxTime(endCalendar);  
  42.           
  43.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  44.     }  
  45.       
  46.     /** 
  47.      * 获取昨天的时间范围 
  48.      * @return 
  49.      */  
  50.     public static DateRange getYesterdayRange() {  
  51.          Calendar startCalendar = Calendar.getInstance();  
  52.          startCalendar.add(Calendar.DAY_OF_MONTH, -1);  
  53.          setMinTime(startCalendar);  
  54.            
  55.          Calendar endCalendar = Calendar.getInstance();  
  56.          endCalendar.add(Calendar.DAY_OF_MONTH, -1);  
  57.          setMaxTime(endCalendar);  
  58.            
  59.          return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  60.     }  
  61.       
  62.     /** 
  63.      * 获取当前月份的时间范围 
  64.      * @return 
  65.      */  
  66.     public static DateRange getThisMonth(){  
  67.         Calendar startCalendar = Calendar.getInstance();  
  68.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  69.         setMinTime(startCalendar);  
  70.           
  71.         Calendar endCalendar = Calendar.getInstance();  
  72.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  73.         setMaxTime(endCalendar);  
  74.           
  75.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  76.     }  
  77.       
  78.     /** 
  79.      * 获取上个月的时间范围 
  80.      * @return 
  81.      */  
  82.     public static DateRange getLastMonth(){  
  83.         Calendar startCalendar = Calendar.getInstance();  
  84.         startCalendar.add(Calendar.MONTH, -1);  
  85.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  86.         setMinTime(startCalendar);  
  87.           
  88.         Calendar endCalendar = Calendar.getInstance();  
  89.         endCalendar.add(Calendar.MONTH, -1);  
  90.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  91.         setMaxTime(endCalendar);  
  92.           
  93.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  94.     }  
  95.       
  96.     /** 
  97.      * 获取上个季度的时间范围 
  98.      * @return 
  99.      */  
  100.     public static DateRange getLastQuarter() {  
  101.         Calendar startCalendar = Calendar.getInstance();  
  102.         startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3);  
  103.         startCalendar.set(Calendar.DAY_OF_MONTH, 1);  
  104.         setMinTime(startCalendar);  
  105.           
  106.         Calendar endCalendar = Calendar.getInstance();  
  107.         endCalendar.set(Calendar.MONTH, ((int) endCalendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);  
  108.         endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
  109.         setMaxTime(endCalendar);  
  110.           
  111.         return new DateRange(startCalendar.getTime(), endCalendar.getTime());  
  112.     }  
  113.       
  114.     private static void setMinTime(Calendar calendar){  
  115.         calendar.set(Calendar.HOUR_OF_DAY, 0);  
  116.         calendar.set(Calendar.MINUTE, 0);  
  117.         calendar.set(Calendar.SECOND, 0);  
  118.         calendar.set(Calendar.MILLISECOND, 0);  
  119.     }  
  120.       
  121.     private static void setMaxTime(Calendar calendar){  
  122.         calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));  
  123.         calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));  
  124.         calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));  
  125.         calendar.set(Calendar.MILLISECOND, calendar.getActualMaximum(Calendar.MILLISECOND));  
  126.     }  
  127.       
  128.       
  129.     public final static String DEFAULT_PATTERN = "MM/dd/yyyy HH:mm:ss";  
  130.     public static String format(Date date){  
  131.         SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);  
  132.         return sdf.format(date);  
  133.     }  
  134.       
  135.     public static void main(String[] args) {  
  136.           
  137.         DateRange currentQuarter = getThisQuarter();  
  138.         System.out.println("当前季度的时间范围: "+DateUtilsTemp.format(currentQuarter.getStart())+" - "+DateUtilsTemp.format(currentQuarter.getEnd()));  
  139.           
  140.           
  141.         DateRange yesterdayRange = getYesterdayRange();  
  142.         System.out.println("昨天的时间范围: "+DateUtilsTemp.format(yesterdayRange.getStart())+" - "+DateUtilsTemp.format(yesterdayRange.getEnd()));  
  143.           
  144.         DateRange thisMonth = getThisMonth();  
  145.         System.out.println("当前月份的时间范围: "+DateUtilsTemp.format(thisMonth.getStart())+" - "+DateUtilsTemp.format(thisMonth.getEnd()));  
  146.           
  147.         DateRange lastMonth = getLastMonth();  
  148.         System.out.println("上个月的时间范围: "+DateUtilsTemp.format(lastMonth.getStart())+" - "+DateUtilsTemp.format(lastMonth.getEnd()));  
  149.           
  150.         DateRange lastQuarter = getLastQuarter();  
  151.         System.out.println("上个季度的时间范围: "+DateUtilsTemp.format(lastQuarter.getStart())+" - "+DateUtilsTemp.format(lastQuarter.getEnd()));  
  152.           
  153.     }  
  154. }  
  • DateRange.java
[java]  view plain  copy
  1. package top.itart.blog.common.bean;  
  2.   
  3. import java.util.Date;  
  4.   
  5. public class DateRange {  
  6.     private Date start;  
  7.     private Date end;  
  8.       
  9.     public DateRange(Date start, Date end) {  
  10.         this.start = start;  
  11.         this.end = end;  
  12.     }  
  13.       
  14.     public Date getStart() {  
  15.         return start;  
  16.     }  
  17.     public void setStart(Date start) {  
  18.         this.start = start;  
  19.     }  
  20.     public Date getEnd() {  
  21.         return end;  
  22.     }  
  23.     public void setEnd(Date end) {  
  24.         this.end = end;  
  25.     }  
  26.       
  27. }  

 

如果当前时间是: 2015/09/06, 则运行结果如下:

 

[plain]  view plain  copy
  1. 当前季度的时间范围: 07/01/2015 00:00:00 - 09/30/2015 23:59:59  
  2. 昨天的时间范围: 09/05/2015 00:00:00 - 09/05/2015 23:59:59  
  3. 当前月份的时间范围: 09/01/2015 00:00:00 - 09/30/2015 23:59:59  
  4. 上个月的时间范围: 08/01/2015 00:00:00 - 08/31/2015 23:59:59  
  5. 上个季度的时间范围: 04/01/2015 00:00:00 - 06/30/2015 23:59:59  

你可能感兴趣的:(日期获取)