`
iorit2003
  • 浏览: 138680 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

java时间

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

相关推荐

Global site tag (gtag.js) - Google Analytics