java 时间处理

  1 import java.text.DateFormat;
  2 import java.text.ParseException;
  3 import java.text.SimpleDateFormat;
  4 import java.util.Calendar;
  5 import java.util.Date;
  6 import java.util.GregorianCalendar;
  7 
  8 public class Time {
  9     /**
 10      * 日期格式转换 
 11      */
 12     public static String simpledateformat(Date date){
 13         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 14         String dates="";
 15         if(date!=null){
 16             dates=sdf.format(date);
 17         }
 18         return dates;
 19     }
 20     
 21     /**
 22      *    long型时间转换成指定格式的时间类型 
 23      */
 24     public static String longTimeToStrFormat(long time,String format){
 25         Date date = new Date(time);
 26         SimpleDateFormat formatter = new SimpleDateFormat(format);
 27          String datetime = formatter.format(date);
 28          return datetime;
 29     }
 30     /** 
 31      * 字符串型时间格式 转换成long型时间 
 32      */
 33     public static long strTimeToLong(String time){
 34         String format = "yyyy-MM-dd HH:mm:ss";
 35         return strTimeToLong(time, format);
 36     }
 37     public static long strTimeToLong(String time,String format){
 38         SimpleDateFormat sdf=new SimpleDateFormat(format);
 39         long longTime = 0;
 40         try {
 41             longTime = sdf.parse(time).getTime();
 42         } catch (ParseException e) {
 43             e.printStackTrace();
 44         }
 45         return longTime;
 46     }
 47     /**
 48      * 按指定格式返回当前时间
 49      */
 50     public static String getCurTimeFormat(String format){
 51         Date date = new Date();
 52          return getDateTimeFormat(date,format);
 53     }
 54     public static String getDateTimeFormat(Date date,String format){
 55         SimpleDateFormat formatter = new SimpleDateFormat(format);
 56         String datetime = formatter.format(date);
 57          return datetime;
 58     }
 59     public static String getCurTimeFormat(){
 60          return getCurTimeFormat("yyyy-MM-dd HH:mm:ss");
 61     }
 62     public static Date getDateAfterHourDefault(){ 
 63         return getDateAfterHour(8);
 64     }
 65     public static Date getDateAfterHour(int hour){
 66         Date date = new Date(System.currentTimeMillis() + hour*3600000);
 67         return date;
 68     }
 69     public static String getCurTimeDesc(){
 70         Calendar calendar = Calendar.getInstance();
 72         StringBuffer sb = new StringBuffer();
 73         sb.append("今天是");
 74         sb.append(calendar.get(Calendar.YEAR));
 75         sb.append("年");
 76         sb.append(calendar.get(Calendar.MONTH)+1);
 77         sb.append("月");
 78         sb.append(calendar.get(Calendar.DAY_OF_MONTH));
 79         sb.append("日");
 80         sb.append(" 星期");
 81         String week = "日";
 82         switch (calendar.get(Calendar.DAY_OF_WEEK)) {
 83         case 1:
 84             week = "日";
 85             break;
 86         case 2:
 87             week = "一";
 88             break;
 89         case 3:
 90             week = "二";
 91             break;
 92         case 4:
 93             week = "三";
 94             break;
 95         case 5:
 96             week = "四";
 97             break;
 98         case 6:
 99             week = "五";
100             break;
101         case 7:
102             week = "六";
103             break;
104         }
105         sb.append(week);
106         return sb.toString();
107     }
108     /**
109      * 获取特殊的日期   
110      * firstday_week 本周第一天                lastday_week  本周最后一天
111      * firstday_lastweek 上周第一天    lastday_lastweek 上周最后一天
112      * firstday_month 本月第一天             lastday_month 本月最后一天
113      * firstday_season 本季度第一天      lastday_season本季度最后一天
114      */
115     public static String getDays(String keyvalue){
116         String date="";
117         DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
118         Calendar c = Calendar.getInstance();
119         // 默认时,每周第一天为星期日,需要更改一下
120         c.setFirstDayOfWeek(Calendar.MONDAY);
121         //本周的第一天
122         if(keyvalue.equals("firstday_week")){
123             c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
124             Date first = c.getTime();
125             date=format.format(first);
126         }
127         //本周的最后一天
128         if(keyvalue.equals("lastday_week")){
129             c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
130             Date last = c.getTime();
131             date=format.format(last);
132         }
133         //上周的第一天
134         if(keyvalue.equals("firstday_lastweek")){
135              c.add(Calendar.WEEK_OF_YEAR, -1); // back to last week
136              c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY );
137              Date beforefirst = c.getTime();
138              date=format.format(beforefirst);
139         }
140         //上周的最后一天
141         if(keyvalue.equals("lastday_lastweek")){
142              c.add(Calendar.WEEK_OF_YEAR, -1); // back to last week
143              c.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
144              Date beforelast = c.getTime();
145              date=format.format(beforelast);
146         }
147         //本月的第一天
148         if(keyvalue.equals("firstday_month")){
149              c.set(Calendar.DAY_OF_MONTH, 1);
150              Date dayofmonth =c.getTime();
151              date=format.format(dayofmonth);
152         }
153         //本月的最后一天
154         if(keyvalue.equals("lastday_month")){
155             
156              c.setTime(new Date()); 
157              c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));  
158              Date lastdayofmonth= c.getTime();
159              date=format.format(lastdayofmonth);
160         }
161         //本季度的第一天
162         if(keyvalue.equals("firstday_season")){
163             // 季度初  
164             int year =c.get(Calendar.YEAR);
165             System.out.println(year);
166             int month = c.get(Calendar.MONTH) + 1;
167             System.out.println(month);
168             if(month>=1&&month<=3){
169                 date=year+"-01-01";
170             }
171             if(month>=4&&month<=6){
172                 date=year+"-04-01";
173             }
174             if(month>=7&&month<=9){
175                 date=year+"-07-01";
176             }
177             if(month>=10&&month<=12){
178                 date=year+"-10-01";
179             }
180         }
181      // 季度最后一天 
182         if(keyvalue.equals("lastday_season")){
183             // 季度初  
184             int year =c.get(Calendar.YEAR);
185             int month = c.get(Calendar.MONTH) + 1;
186             if(month>=1&&month<=3){
187                 date=year+"-03-31";
188             }
189             if(month>=4&&month<=6){
190                 date=year+"-06-30";
191             }
192             if(month>=7&&month<=9){
193                 date=year+"-09-30";
194             }
195             if(month>=10&&month<=12){
196                 date=year+"-12-31";
197             }
198         }
199         return date;
200     }
201     /**
202      * 判断一段时间内有多少个工作日  一周5天  不排除节假日
203      */
204     public static int getworkdaysfromperiodtime(String startdate,String enddate){
205            Calendar dayc1 = new GregorianCalendar();
206            Calendar dayc2 = new GregorianCalendar();
207            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
208         try {
209               Date daystart = df.parse(startdate);
210               Date dayend = df.parse(enddate);
211               dayc1.setTime(daystart); //设置calendar的日期
212               dayc2.setTime(dayend);
213         } catch (ParseException e) {
214             e.printStackTrace();
215         } //按照yyyy-MM-dd格式转换为日期
216            int days=0;
217         for (; dayc1.compareTo(dayc2) <= 0;) {   //dayc1在dayc2之前就循环
218             //打印年月日
219              if(dayc1.get(Calendar.DAY_OF_WEEK)!=1&&dayc1.get(Calendar.DAY_OF_WEEK)!=7){
220                  days++;
221                  }
222               dayc1.add(Calendar.DAY_OF_YEAR, 1);  //加1天
223            }
224         return days;
225     }
226     public static String lastdayofmonth(int year ,int month){
227         String firstday = "";
228         try {
229             if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
230                 return year+"-"+month+"-"+31+" 23:59:59";
231             }else if(month==4||month==6||month==9||month==11) {
232                 return year+"-"+month+"-"+30+" 23:59:59";
233             }else if(month == 2){
234                 return year+"-"+month+"-"+28+" 23:59:59";
235             }else{
236                 return firstday;
237             }
238             } catch (Exception e) {
239                 e.printStackTrace();
240                 return firstday;
241             } 
242     }
243     public static void main(String[] s){
244         Calendar calendar = Calendar.getInstance();
245         System.out.println(getCurTimeDesc());
246         
247         
248         String time = "2015-05-15";
249         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
250         long longTime = 0;
251         try {
252             longTime = sdf.parse(time).getTime();
253         } catch (ParseException e) {
254             e.printStackTrace();
255         }
256         System.out.println(longTime);
257         String date=getDays("firstday_week");
258         
259         int days=getworkdaysfromperiodtime("2015-12-1","2015-12-31");
260         System.out.println(days+"天");
261     }
262     
263     
264     
265 }

 

posted @ 2015-06-29 16:40  长安绝响  阅读(304)  评论(0)    收藏  举报