CalendarUtil.java

  1 package com.honghailt.dataextracter.utils;
  2 
  3 import java.text.ParseException;
  4 import java.text.SimpleDateFormat;
  5 import java.util.ArrayList;
  6 import java.util.Calendar;
  7 import java.util.Date;
  8 import java.util.List;
  9 
 10 public  class CalendarUtil {
 11     
 12     //下月第一天
 13     public static Date getNextMonth(Date beginTime) {
 14         Calendar c = Calendar.getInstance();
 15         c.setTime(beginTime);
 16         c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);
 17         c.set(Calendar.DAY_OF_MONTH, 1);
 18         return c.getTime();
 19     }
 20 
 21     //当天几号
 22     public static int getMonthOfDate(Date date) {
 23         Calendar c = Calendar.getInstance();
 24         c.setTime(date);
 25         return c.get(Calendar.DAY_OF_MONTH);
 26     }
 27     //当月有多少天
 28     public static int getLastDayOfMonth(Date date) {
 29         Calendar c = Calendar.getInstance();
 30         c.setTime(date);
 31         int month = c.getActualMaximum(Calendar.DATE);
 32         return month;
 33     }
 34    
 35     //当前月 -1
 36     public static int getMonth(Date date) {
 37         Calendar c = Calendar.getInstance();
 38         c.setTime(date);
 39         int month = c.get(Calendar.MONTH);
 40         return month;
 41     }
 42   
 43     //当月第一天
 44       public static Date getFirstDayOfMonth(Date beginTime){
 45            Calendar c = Calendar.getInstance();
 46            c.setTime(beginTime);
 47            c.set(Calendar.DAY_OF_MONTH, 1);
 48            return c.getTime();
 49       }
 50   
 51     //获得当周第几天  i=0表示星期一
 52     public static String getNowWeekBegin(Date date,int i) {
 53         Calendar cd = Calendar.getInstance();
 54         cd.setTime(date);
 55         cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH +i);
 56         if(i==6){
 57          cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH+5);
 58          cd.add(cd.DATE, 1); 
 59         }
 60         Date  monday =cd.getTime();
 61         SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
 62         String preMonday = df.format(monday);
 63         return preMonday ;
 64         } 
 65     
 66     //获得当周第几天,返回日期形。i=0表示星期一
 67     public static Date getNowWeekBeginDate(Date date,int i) {
 68         Calendar cd = Calendar.getInstance();
 69         cd.setTime(date);
 70         cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH +i);
 71         if(i==6){
 72          cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH+5);
 73          cd.add(cd.DATE, 1); 
 74         }
 75         Date  monday =cd.getTime();
 76         return monday ;
 77         } 
 78     //获得本周日期
 79     public static List<String> getDaysOfWeek(Date date){
 80         List<String> days = new ArrayList<String>();
 81         for (int i = 0; i < 7; i++) {
 82             days.add(getNowWeekBegin(date,i));
 83         }
 84         return days;
 85     }
 86     //获得本周日期
 87     public static List<Date> getDaysOfWeekDate(Date date){
 88         List<Date> days = new ArrayList<Date>();
 89         for (int i = 0; i < 7; i++) {
 90             days.add(getNowWeekBeginDate(date,i));
 91         }
 92         return days;
 93     }
 94     
 95     /**
 96      * 获得当月第几周
 97      * @param date
 98      * @param week
 99      * @return
100      */
101     public static List<String> getWeeksOfMonth(Date date,int week){
102         int day =7*week+1;
103         Calendar c = Calendar.getInstance();
104         c.setTime(date);
105         c.set(Calendar.DAY_OF_MONTH, day);
106         return getDaysOfWeek(c.getTime());
107     }
108   
109     //本月最后一天
110     public static Date getDateOfLastDayOfMonth(Date date){
111         Calendar c = Calendar.getInstance();
112         c.setTime(date);
113         c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DATE));
114         return c.getTime();
115     }
116     //获得本月第几天,0表示第一天
117    public static Date getDayOfMonth(Date date,int i){
118        Calendar c = Calendar.getInstance();
119            c.setTime(date);
120            c.set(Calendar.DAY_OF_MONTH, i+1);
121        return c.getTime();
122    }
123     //本月共几周
124     public static int getWeekyofMonth(Date date){
125         Date d1 = getFirstDayOfMonth(date);//第一天
126         Date d2 = getDateOfLastDayOfMonth(date);//最后一天
127         Date mon1 =getNowWeekBeginDate(d1,0);//第一天所在周星期一
128         Date mon2 =getNowWeekBeginDate(d2,0);//最后一天所在周星期一
129         return (int) ((mon2.getTime()-mon1.getTime())/3600/24/1000)/7;
130     }
131    public static List<String> getWeekName(){
132        List<String> list = new ArrayList<String>();
133        list.add("周一");
134        list.add("周二");
135        list.add("周三");
136        list.add("周四");
137        list.add("周五");
138        list.add("周六");
139        list.add("周日");
140        return list;
141        
142    }
143    /**
144     * 首先获得 定一个时间,就2014-07-14为单周
145     * 然后获得传过来日期的星期一与这个时间除以7.
146     * 然后结果除以2,如果余数是0,这是单周,否则是双周
147     * @param date
148     * @return
149     */
150  public static String getDanShuangWeek(Date date){
151     Date beginDate =StringToDate("2014-07-14");
152     Date nowDate =getNowWeekBeginDate(date,0); 
153     int temp = (int) ((nowDate.getTime() -beginDate.getTime())/3600/24/1000);
154     int danshuang=temp%2;
155     String str=null;
156     if(danshuang==0){
157         str="单周";
158     }else{
159         str="双周";
160     }
161      return str;
162  }
163  
164  public static int getDanShuangWeekInt(Date date){
165         Date beginDate =StringToDate("2014-07-14");
166         
167         Date nowDate =getNowWeekBeginDate(date,0); 
168         int temp = (int) ((nowDate.getTime() -beginDate.getTime())/3600/24/1000);
169         int danshuang=temp%2;
170          return danshuang;
171      }
172  
173  public static Date StringToDate(String strDate){
174      SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
175      Date date =null;
176      try {
177           date = df.parse(strDate);
178     } catch (ParseException e) {
179         // TODO Auto-generated catch block
180         e.printStackTrace();
181     }
182      return date;
183  }
184  
185  public static Date DateToDate(Date date){
186      SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
187      String strDate= df.format(date);
188      return StringToDate(strDate);
189  }
190  
191  public static void main(String[] args) {
192 //    System.out.println(getDanShuangWeek(StringToDate("2014-08-02"))); ;
193     // System.out.println(getDayOfMonth(new Date(),10));
194      System.out.println(DateToDate(new Date()));
195 }
196 }
原文地址:https://www.cnblogs.com/w8104254/p/3855858.html