載:獲取各種時間的總結

http://stanlyy.iteye.com/blog/458401

 

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