转载:获取各种时间的总结

来源:互联网 发布:深圳龙岗ug编程培训 编辑:程序博客网 时间:2024/06/08 04:59
转载:获取各种时间的总结 
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. }     
0 0
原创粉丝点击