Java获取各种常用时间方法

来源:互联网 发布:二叉树的后序遍历算法 编辑:程序博客网 时间:2024/04/30 00:22
 
  1. import java.text.DateFormat;   
  2. import java.text.ParsePosition;   
  3. import java.text.SimpleDateFormat;   
  4. import java.util.Calendar;   
  5. import java.util.Date;   
  6. import java.util.GregorianCalendar;   
  7.   
  8. /**  
  9.  * <p>Title: </p>  
  10.  *  
  11.  * <p>Description: </p>  
  12.  *  
  13.  * <p>Copyright: Copyright (C)  2008</p>  
  14.  *  
  15.  * <p>Company: ZZXT</p>  
  16.  *  
  17.  * @author 武尧      2008-12-1 下午08:43:57  
  18.  * @version 1.0  
  19.  */  
  20. public class TimeTest {   
  21.     //用来全局控制 上一周,本周,下一周的周数变化   
  22.     private  int weeks = 0;   
  23.     private int MaxDate;//一月最大天数   
  24.     private int MaxYear;//一年最大天数   
  25.        
  26.        
  27.     /**  
  28.      * @param args  
  29.      */  
  30.     public static void main(String[] args) {   
  31.         TimeTest tt = new TimeTest();   
  32.         System.out.println("获取当天日期:"+tt.getNowTime("yyyy-MM-dd"));   
  33.         System.out.println("获取本周一日期:"+tt.getMondayOFWeek());   
  34.         System.out.println("获取本周日的日期~:"+tt.getCurrentWeekday());   
  35.         System.out.println("获取上周一日期:"+tt.getPreviousWeekday());   
  36.         System.out.println("获取上周日日期:"+tt.getPreviousWeekSunday());   
  37.         System.out.println("获取下周一日期:"+tt.getNextMonday());   
  38.         System.out.println("获取下周日日期:"+tt.getNextSunday());   
  39.         System.out.println("获得相应周的周六的日期:"+tt.getNowTime("yyyy-MM-dd"));   
  40.         System.out.println("获取本月第一天日期:"+tt.getFirstDayOfMonth());   
  41.         System.out.println("获取本月最后一天日期:"+tt.getDefaultDay());   
  42.         System.out.println("获取上月第一天日期:"+tt.getPreviousMonthFirst());   
  43.         System.out.println("获取上月最后一天的日期:"+tt.getPreviousMonthEnd());   
  44.         System.out.println("获取下月第一天日期:"+tt.getNextMonthFirst());   
  45.         System.out.println("获取下月最后一天日期:"+tt.getNextMonthEnd());   
  46.         System.out.println("获取本年的第一天日期:"+tt.getCurrentYearFirst());   
  47.         System.out.println("获取本年最后一天日期:"+tt.getCurrentYearEnd());   
  48.         System.out.println("获取去年的第一天日期:"+tt.getPreviousYearFirst());   
  49.         System.out.println("获取去年的最后一天日期:"+tt.getPreviousYearEnd());   
  50.         System.out.println("获取明年第一天日期:"+tt.getNextYearFirst());   
  51.         System.out.println("获取明年最后一天日期:"+tt.getNextYearEnd());   
  52.         System.out.println("获取本季度第一天到最后一天:"+tt.getThisSeasonTime(11));   
  53.         System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"+TimeTest.getTwoDay("2008-12-1","2008-9-29"));   
  54.         System.out.println("根据日期获得星期几:"+TimeTest.getWeek("2008-12-1"));   
  55.     }   
  56.        
  57.        
  58.     /**  
  59.         * 得到二个日期间的间隔天数  
  60.         */  
  61.     public static String getTwoDay(String sj1, String sj2) {   
  62.         SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");   
  63.         long day = 0;   
  64.         try {   
  65.          java.util.Date date = myFormatter.parse(sj1);   
  66.          java.util.Date mydate = myFormatter.parse(sj2);   
  67.          day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);   
  68.         } catch (Exception e) {   
  69.          return "";   
  70.         }   
  71.         return day + "";   
  72.     }   
  73.   
  74.   
  75.     /**  
  76.         * 根据一个日期,返回是星期几的字符串  
  77.         *   
  78.         * @param sdate  
  79.         * @return  
  80.         */  
  81.     public static String getWeek(String sdate) {   
  82.         // 再转换为时间   
  83.         Date date = TimeTest.strToDate(sdate);   
  84.         Calendar c = Calendar.getInstance();   
  85.         c.setTime(date);   
  86.         // int hour=c.get(Calendar.DAY_OF_WEEK);   
  87.         // hour中存的就是星期几了,其范围 1~7   
  88.         // 1=星期日 7=星期六,其他类推   
  89.         return new SimpleDateFormat("EEEE").format(c.getTime());   
  90.     }   
  91.   
  92.     /**  
  93.         * 将短时间格式字符串转换为时间 yyyy-MM-dd   
  94.         *   
  95.         * @param strDate  
  96.         * @return  
  97.         */  
  98.     public static Date strToDate(String strDate) {   
  99.         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");   
  100.         ParsePosition pos = new ParsePosition(0);   
  101.         Date strtodate = formatter.parse(strDate, pos);   
  102.         return strtodate;   
  103.     }   
  104.   
  105.     /**  
  106.         * 两个时间之间的天数  
  107.         *   
  108.         * @param date1  
  109.         * @param date2  
  110.         * @return  
  111.         */  
  112.     public static long getDays(String date1, String date2) {   
  113.         if (date1 == null || date1.equals(""))   
  114.          return 0;   
  115.         if (date2 == null || date2.equals(""))   
  116.          return 0;   
  117.         // 转换为标准时间   
  118.         SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");   
  119.         java.util.Date date = null;   
  120.         java.util.Date mydate = null;   
  121.         try {   
  122.          date = myFormatter.parse(date1);   
  123.          mydate = myFormatter.parse(date2);   
  124.         } catch (Exception e) {   
  125.         }   
  126.         long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);   
  127.         return day;   
  128.     }   
  129.   
  130.   
  131.   
  132.        
  133.     // 计算当月最后一天,返回字符串   
  134.     public String getDefaultDay(){     
  135.        String str = "";   
  136.        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");       
  137.   
  138.        Calendar lastDate = Calendar.getInstance();   
  139.        lastDate.set(Calendar.DATE,1);//设为当前月的1号   
  140.        lastDate.add(Calendar.MONTH,1);//加一个月,变为下月的1号   
  141.        lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天   
  142.           
  143.        str=sdf.format(lastDate.getTime());   
  144.        return str;     
  145.     }   
  146.        
  147.     // 上月第一天   
  148.     public String getPreviousMonthFirst(){     
  149.        String str = "";   
  150.        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");       
  151.   
  152.        Calendar lastDate = Calendar.getInstance();   
  153.        lastDate.set(Calendar.DATE,1);//设为当前月的1号   
  154.        lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号   
  155.        //lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天   
  156.           
  157.        str=sdf.format(lastDate.getTime());   
  158.        return str;     
  159.     }   
  160.        
  161.     //获取当月第一天   
  162.     public String getFirstDayOfMonth(){     
  163.        String str = "";   
  164.        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");       
  165.   
  166.        Calendar lastDate = Calendar.getInstance();   
  167.        lastDate.set(Calendar.DATE,1);//设为当前月的1号   
  168.        str=sdf.format(lastDate.getTime());   
  169.        return str;     
  170.     }   
  171.        
  172.     // 获得本周星期日的日期     
  173.     public String getCurrentWeekday() {   
  174.         weeks = 0;   
  175.         int mondayPlus = this.getMondayPlus();   
  176.         GregorianCalendar currentDate = new GregorianCalendar();   
  177.         currentDate.add(GregorianCalendar.DATE, mondayPlus+6);   
  178.         Date monday = currentDate.getTime();   
  179.            
  180.         DateFormat df = DateFormat.getDateInstance();   
  181.         String preMonday = df.format(monday);   
  182.         return preMonday;   
  183.     }   
  184.        
  185.        
  186.     //获取当天时间    
  187.     public String getNowTime(String dateformat){   
  188.         Date   now   =   new   Date();      
  189.         SimpleDateFormat   dateFormat   =   new   SimpleDateFormat(dateformat);//可以方便地修改日期格式      
  190.         String  hehe  = dateFormat.format(now);      
  191.         return hehe;   
  192.     }   
  193.        
  194.     // 获得当前日期与本周日相差的天数   
  195.     private int getMondayPlus() {   
  196.         Calendar cd = Calendar.getInstance();   
  197.         // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......   
  198.         int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1;         //因为按中国礼拜一作为第一天所以这里减1   
  199.         System.out.println("相差天数:"+dayOfWeek);   
  200.         if (dayOfWeek == 1) {   
  201.             return 0;   
  202.         } else {   
  203.             return 1 - dayOfWeek;   
  204.         }   
  205.     }   
  206.        
  207.     //获得本周一的日期   
  208.     public String getMondayOFWeek(){   
  209.          weeks = 0;   
  210.          int mondayPlus = this.getMondayPlus();   
  211.          GregorianCalendar currentDate = new GregorianCalendar();   
  212.          currentDate.add(GregorianCalendar.DATE, mondayPlus);   
  213.          Date monday = currentDate.getTime();   
  214.             
  215.          DateFormat df = DateFormat.getDateInstance();   
  216.          String preMonday = df.format(monday);   
  217.          return preMonday;   
  218.     }   
  219.        
  220.   //获得相应周的周六的日期   
  221.     public String getSaturday() {   
  222.         int mondayPlus = this.getMondayPlus();   
  223.         GregorianCalendar currentDate = new GregorianCalendar();   
  224.         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);   
  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 getPreviousWeekSunday() {   
  233.         weeks=0;   
  234.         weeks--;   
  235.         int mondayPlus = this.getMondayPlus();   
  236.         GregorianCalendar currentDate = new GregorianCalendar();   
  237.         currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks);   
  238.         Date monday = currentDate.getTime();   
  239.         DateFormat df = DateFormat.getDateInstance();   
  240.         String preMonday = df.format(monday);   
  241.         return preMonday;   
  242.     }   
  243.   
  244.  // 获得上周星期一的日期   
  245.     public String getPreviousWeekday() {   
  246.         weeks--;   
  247.         int mondayPlus = this.getMondayPlus();   
  248.         GregorianCalendar currentDate = new GregorianCalendar();   
  249.         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);   
  250.         Date monday = currentDate.getTime();   
  251.         DateFormat df = DateFormat.getDateInstance();   
  252.         String preMonday = df.format(monday);   
  253.         return preMonday;   
  254.     }   
  255.        
  256.     // 获得下周星期一的日期   
  257.     public String getNextMonday() {   
  258.         weeks++;   
  259.         int mondayPlus = this.getMondayPlus();   
  260.         GregorianCalendar currentDate = new GregorianCalendar();   
  261.         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);   
  262.         Date monday = currentDate.getTime();   
  263.         DateFormat df = DateFormat.getDateInstance();   
  264.         String preMonday = df.format(monday);   
  265.         return preMonday;   
  266.     }   
  267.        
  268.  // 获得下周星期日的日期   
  269.     public String getNextSunday() {   
  270.            
  271.         int mondayPlus = this.getMondayPlus();   
  272.         GregorianCalendar currentDate = new GregorianCalendar();   
  273.         currentDate.add(GregorianCalendar.DATE, mondayPlus + 7+6);   
  274.         Date monday = currentDate.getTime();   
  275.         DateFormat df = DateFormat.getDateInstance();   
  276.         String preMonday = df.format(monday);   
  277.         return preMonday;   
  278.     }   
  279.        
  280.        
  281.        
  282.     private int getMonthPlus(){   
  283.         Calendar cd = Calendar.getInstance();   
  284.         int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH);   
  285.         cd.set(Calendar.DATE, 1);//把日期设置为当月第一天    
  286.         cd.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天    
  287.         MaxDate=cd.get(Calendar.DATE);    
  288.         if(monthOfNumber == 1){   
  289.             return -MaxDate;   
  290.         }else{   
  291.             return 1-monthOfNumber;   
  292.         }   
  293.     }   
  294.        
  295.   //获得上月最后一天的日期   
  296.     public String getPreviousMonthEnd(){   
  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.       lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天    
  304.        str=sdf.format(lastDate.getTime());   
  305.        return str;     
  306.     }   
  307.        
  308.   //获得下个月第一天的日期   
  309.     public String getNextMonthFirst(){   
  310.         String str = "";   
  311.        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");       
  312.   
  313.        Calendar lastDate = Calendar.getInstance();   
  314.       lastDate.add(Calendar.MONTH,1);//减一个月   
  315.       lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天    
  316.        str=sdf.format(lastDate.getTime());   
  317.        return str;     
  318.     }   
  319.        
  320.   //获得下个月最后一天的日期   
  321.     public String getNextMonthEnd(){   
  322.         String str = "";   
  323.        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");       
  324.   
  325.        Calendar lastDate = Calendar.getInstance();   
  326.       lastDate.add(Calendar.MONTH,1);//加一个月   
  327.       lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天    
  328.       lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天    
  329.        str=sdf.format(lastDate.getTime());   
  330.        return str;     
  331.     }   
  332.        
  333.     //获得明年最后一天的日期   
  334.     public String getNextYearEnd(){   
  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.      lastDate.roll(Calendar.DAY_OF_YEAR, -1);   
  342.        str=sdf.format(lastDate.getTime());   
  343.        return str;     
  344.     }   
  345.        
  346.   //获得明年第一天的日期   
  347.     public String getNextYearFirst(){   
  348.         weeks--;   
  349.         Calendar cd = Calendar.getInstance();   
  350.         cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天   
  351.         cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。   
  352.         int MaxYear = cd.get(Calendar.DAY_OF_YEAR); //获得本年有多少天   
  353.         int yearPlus = this.getYearPlus();   
  354.         GregorianCalendar currentDate = new GregorianCalendar();   
  355.         currentDate.add(GregorianCalendar.DATE,MaxYear-(yearPlus*weeks)+2);   
  356.         Date yearDay = currentDate.getTime();   
  357.         DateFormat df = DateFormat.getDateInstance();   
  358.         String preYearDay = df.format(yearDay);   
  359.         return preYearDay;   
  360.            
  361.     }   
  362.        
  363.   //获得本年有多少天   
  364.     private int getMaxYear(){   
  365.         Calendar cd = Calendar.getInstance();   
  366.         cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天   
  367.         cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。   
  368.         int MaxYear = cd.get(Calendar.DAY_OF_YEAR);    
  369.         return MaxYear;   
  370.     }   
  371.        
  372.     private int getYearPlus(){   
  373.         Calendar cd = Calendar.getInstance();   
  374.         int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天   
  375.         cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天   
  376.         cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。   
  377.         int MaxYear = cd.get(Calendar.DAY_OF_YEAR);   
  378.         if(yearOfNumber == 1){   
  379.             return -MaxYear;   
  380.         }else{   
  381.             return 1-yearOfNumber;   
  382.         }   
  383.     }   
  384.   //获得本年第一天的日期   
  385.     public String getCurrentYearFirst(){   
  386.         int yearPlus = this.getYearPlus();   
  387.         GregorianCalendar currentDate = new GregorianCalendar();   
  388.         currentDate.add(GregorianCalendar.DATE,yearPlus);   
  389.         Date yearDay = currentDate.getTime();   
  390.         DateFormat df = DateFormat.getDateInstance();   
  391.         String preYearDay = df.format(yearDay);   
  392.         return preYearDay;   
  393.     }   
  394.        
  395.        
  396.   //获得本年最后一天的日期 *   
  397.     public String getCurrentYearEnd(){   
  398.         Date date = new Date();   
  399.         SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式      
  400.         String  years  = dateFormat.format(date);      
  401.         return years+"-12-31";   
  402.     }   
  403.        
  404.        
  405.   //获得上年第一天的日期 *   
  406.     public String getPreviousYearFirst(){   
  407.         Date date = new Date();   
  408.         SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式      
  409.         String  years  = dateFormat.format(date); int years_value = Integer.parseInt(years);     
  410.         years_value--;   
  411.         return years_value+"-1-1";   
  412.     }   
  413.        
  414.   //获得上年最后一天的日期   
  415.     public String getPreviousYearEnd(){   
  416.         weeks--;   
  417.         int yearPlus = this.getYearPlus();   
  418.         GregorianCalendar currentDate = new GregorianCalendar();   
  419.         currentDate.add(GregorianCalendar.DATE,yearPlus+MaxYear*weeks+(MaxYear-1));   
  420.         Date yearDay = currentDate.getTime();   
  421.         DateFormat df = DateFormat.getDateInstance();   
  422.         String preYearDay = df.format(yearDay);   
  423.         getThisSeasonTime(11);   
  424.         return preYearDay;   
  425.     }   
  426.        
  427.   //获得本季度   
  428.     public String getThisSeasonTime(int month){   
  429.         int array[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};   
  430.         int season = 1;   
  431.         if(month>=1&&month<=3){   
  432.             season = 1;   
  433.         }   
  434.         if(month>=4&&month<=6){   
  435.             season = 2;   
  436.         }   
  437.         if(month>=7&&month<=9){   
  438.             season = 3;   
  439.         }   
  440.         if(month>=10&&month<=12){   
  441.             season = 4;   
  442.         }   
  443.         int start_month = array[season-1][0];   
  444.         int end_month = array[season-1][2];   
  445.            
  446.         Date date = new Date();   
  447.         SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式      
  448.         String  years  = dateFormat.format(date);      
  449.         int years_value = Integer.parseInt(years);   
  450.            
  451.         int start_days =1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);   
  452.         int end_days = getLastDayOfMonth(years_value,end_month);   
  453.         String seasonDate = years_value+"-"+start_month+"-"+start_days+";"+years_value+"-"+end_month+"-"+end_days;   
  454.         return seasonDate;   
  455.            
  456.     }   
  457.        
  458.     /**  
  459.      * 获取某年某月的最后一天  
  460.      * @param year 年  
  461.      * @param month 月  
  462.      * @return 最后一天  
  463.      */  
  464.    private int getLastDayOfMonth(int year, int month) {   
  465.          if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8  
  466.                    || month == 10 || month == 12) {   
  467.                return 31;   
  468.          }   
  469.          if (month == 4 || month == 6 || month == 9 || month == 11) {   
  470.                return 30;   
  471.          }   
  472.          if (month == 2) {   
  473.                if (isLeapYear(year)) {   
  474.                    return 29;   
  475.                } else {   
  476.                    return 28;   
  477.                }   
  478.          }   
  479.          return 0;   
  480.    }   
  481.    /**  
  482.     * 是否闰年  
  483.     * @param year 年  
  484.     * @return   
  485.     */  
  486.   public boolean isLeapYear(int year) {   
  487.         return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);   
  488.   }   
  489. }  
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 5年糖尿病血糖高怎么办 血糖高引起的视力模糊怎么办 谷丙转氨酶和谷草转氨酶高怎么办 产检血糖有点高怎么办 孕期餐后血糖高怎么办 怀孕12周血糖高怎么办 怀孕2个月血糖高怎么办 怀孕7个月血糖高怎么办 孕妇7个月血糖高怎么办 空腹血糖6%2e7怎么办 血糖和尿酸都高怎么办 血糖高的孕妇便秘怎么办 血糖低怎么办吃什么好 孕检空腹血糖高怎么办 怀孕4个月血糖高怎么办 怀孕3个月血糖高怎么办 怀孕6个月血糖高怎么办 孕29周血糖高怎么办 餐后血糖偶尔高怎么办 歺后血糖9.8高怎么办 怀孕5个月血糖高怎么办 歺后2小时血糖高怎么办 怀孕餐后血糖高怎么办 老人餐后血糖高怎么办 血糖高尿糖不高怎么办 小孩鼻子不通气怎么办特效方法 婴儿20天不大便怎么办 新生儿8天没大便怎么办 新生儿2天没大便怎么办 新生儿4天没大便怎么办 2岁宝宝便秘严重怎么办 婴儿7天没有大便怎么办 新生儿6天没大便怎么办 大便带鲜血 不疼怎么办 宝宝发烧到39度怎么办 肛裂大便出鲜血怎么办 拉大便有血怎么办啊 长痔疮拉大便血怎么办 病人卧床太久不解大便怎么办 宝宝拉泡沫便便怎么办 孩子拉肚子怎么办呢有好办法吗