分享

Java常用时间操作工具类

 kekokeko 2010-12-10

Java常用时间操作工具类

文章分类:Java编程

话不多说,下文是一个时间计算的工具类,提供了一些常用的时间计算方法,大家也可以自己在这个的基础上修改和扩展。希望对大家有一点点用处。

 

Java代码 复制代码
  1. package www.;   
  2.   
  3. import java.text.SimpleDateFormat;   
  4. import java.util.ArrayList;   
  5. import java.util.Calendar;   
  6. import java.util.Date;   
  7. import java.util.List;   
  8. import java.util.Locale;   
  9. import java.util.TimeZone;   
  10.   
  11. /**  
  12.  * @author: Frank  
  13.  * @site: <a href="http://www.">名课堂企业管理培训网</a>  
  14.  * @company: http://www.  
  15.  * @blog: http://crazysheep./  
  16.  */  
  17. public class DateUtils {   
  18.   
  19.     //http响应头Expire属性时间格式   
  20.     public static final String HTTP_RESPONSE_DATE_HEADER = "EEE, dd MMM yyyy HH:mm:ss zzz";   
  21.            
  22.     //http响应头Expire属性时间格式工具   
  23.     public static final SimpleDateFormat responseHeaderFormat = new SimpleDateFormat(HTTP_RESPONSE_DATE_HEADER,Locale.US);   
  24.   
  25.     static{   
  26.         responseHeaderFormat.setTimeZone(TimeZone.getTimeZone("GMT"));   
  27.     }   
  28.        
  29.     /**  
  30.      * 某个时间点的下个月的第一天  
  31.      * @param day  
  32.      * @return  
  33.      */  
  34.     public static Date firstDayInNextMonth(Date day){   
  35.         Calendar c = Calendar.getInstance();   
  36.         c.setTime(day);   
  37.         c.set(Calendar.MONTH, c.get(Calendar.MONTH)+1);   
  38.         c.set(Calendar.DAY_OF_MONTH, 1);   
  39.         c.set(Calendar.HOUR_OF_DAY, 0);   
  40.         c.set(Calendar.MINUTE, 0);   
  41.         c.set(Calendar.SECOND, 0);   
  42.         return c.getTime();   
  43.     }   
  44.   
  45.     /**  
  46.      * 获取某天在星期中的排序值:  
  47.      * 星期日 -> 星期六 对应为:1 -> 7  
  48.      * @param date  
  49.      * @return  
  50.      */  
  51.     public static int getDateInWeek(Date date) {   
  52.         Calendar c = Calendar.getInstance();   
  53.         c.setTime(date);   
  54.         return c.get(Calendar.DAY_OF_WEEK);   
  55.     }   
  56.   
  57.     /**  
  58.      * 获取指定日期后n天的凌晨  
  59.      * @param date  
  60.      * @param n  
  61.      * @return  
  62.      */  
  63.     public static Date getDateNextDay(Date date, int n) {   
  64.         Calendar c = Calendar.getInstance();   
  65.         c.setTime(date);   
  66.         c.add(Calendar.DATE, n);   
  67.         return c.getTime();   
  68.     }   
  69.        
  70.     /**  
  71.      * 获取下n个月后的日期  
  72.      * @param n 月份偏移量  
  73.      * @return  
  74.      */  
  75.     public static Date getDateNextMonth(int n) {   
  76.         Calendar now = Calendar.getInstance();   
  77.         now.set(Calendar.MONTH, now.get(Calendar.MONTH) + n);// 设置时间向前进n个月   
  78.         now.set(Calendar.HOUR_OF_DAY, 0);   
  79.         now.set(Calendar.MINUTE, 0);   
  80.         now.set(Calendar.SECOND, 0);   
  81.         return now.getTime();   
  82.     }   
  83.   
  84.     /**  
  85.      * 获取今天在本月中的号码  
  86.      * @return  
  87.      */  
  88.     public static int getDateOfMoth() {   
  89.         return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);   
  90.     }   
  91.        
  92.     /**  
  93.      * 本月的所有日期集合  
  94.      * @return  
  95.      */  
  96.     public static List<Date> getDatesInMonth() {   
  97.   
  98.         List<Date> dates = new ArrayList<Date>();   
  99.   
  100.         Calendar c = Calendar.getInstance();   
  101.   
  102.         // 设置代表的日期为1号   
  103.         c.set(Calendar.DATE, 1);   
  104.   
  105.         // 获得当前月的最大日期数   
  106.         int maxDay = c.getActualMaximum(Calendar.DATE);   
  107.   
  108.         for (int i = 1; i <= maxDay; i++) {   
  109.             c.set(Calendar.DATE, i);   
  110.             dates.add(c.getTime());   
  111.         }   
  112.   
  113.         return dates;   
  114.     }   
  115.        
  116.     /**  
  117.      * 获取某个时间所在的月份  
  118.      * @param date  
  119.      * @return  
  120.      */  
  121.     public static int getMonth(Date date) {   
  122.         Calendar c = Calendar.getInstance();   
  123.         c.setTime(date);   
  124.         return c.get(Calendar.MONTH) + 1;   
  125.     }   
  126.   
  127.     /**  
  128.      * 获取本月最后一天  
  129.      * @return  
  130.      */  
  131.     public static Date getMonthEnd() {   
  132.         int length = getDateOfMoth();   
  133.         Calendar c = Calendar.getInstance();   
  134.         c.set(Calendar.DATE, length);   
  135.         c.set(Calendar.HOUR, 24);   
  136.         c.set(Calendar.MINUTE, 0);   
  137.         c.set(Calendar.SECOND, 0);   
  138.         return c.getTime();   
  139.     }   
  140.   
  141.     /**  
  142.      * 获取某个时间所在月份的最后一秒  
  143.      * @param date   
  144.      * @return  
  145.      */  
  146.     public static Date getMonthEnd(Date date){   
  147.         if(date == null){   
  148.             return null;   
  149.         }   
  150.         Calendar start = Calendar.getInstance();   
  151.         start.setTime(date);   
  152.         start.set(Calendar.MONTH, start.get(Calendar.MONTH)+1);   
  153.         start.set(Calendar.DAY_OF_MONTH, 1);   
  154.         start.set(Calendar.HOUR, 0);   
  155.         start.set(Calendar.MINUTE, 0);   
  156.         start.set(Calendar.SECOND, 0);   
  157.         return start.getTime();        
  158.     }   
  159.            
  160.     /**  
  161.      * 获取某个时间所在月份的第一天凌晨  
  162.      * @param date   
  163.      * @return  
  164.      */  
  165.     public static Date getMonthStart(Date date){   
  166.         if(date == null){   
  167.             return null;   
  168.         }   
  169.         Calendar start = Calendar.getInstance();   
  170.         start.setTime(date);   
  171.         start.set(Calendar.DAY_OF_MONTH, 1);   
  172.         start.set(Calendar.HOUR, 0);   
  173.         start.set(Calendar.MINUTE, 0);   
  174.         start.set(Calendar.SECOND, 0);   
  175.         return start.getTime();        
  176.     }   
  177.        
  178.     /**  
  179.      * 获取今天凌晨  
  180.      * @return  
  181.      */  
  182.     public static Date getMorning() {   
  183.         return getMorning(new Date());   
  184.     }   
  185.   
  186.     /**  
  187.      * 获取指定时间当天的凌晨  
  188.      * @param date 给定时间当天的凌晨  
  189.      * @return  
  190.      */  
  191.     public static Date getMorning(Date date) {   
  192.         Calendar c = Calendar.getInstance();   
  193.         c.setTime(date);   
  194.         c.set(Calendar.HOUR_OF_DAY, 0);   
  195.         c.set(Calendar.MINUTE, 0);   
  196.         c.set(Calendar.SECOND, 0);   
  197.         return c.getTime();   
  198.     }   
  199.   
  200.     /**  
  201.      * 获取当前时间N天后的凌晨  
  202.      */  
  203.     public static Date getMorningNextDate(int n) {   
  204.         Calendar now = Calendar.getInstance();   
  205.         now.set(Calendar.DATE, now.get(Calendar.DATE) + n); //设置时间向前进n天   
  206.         now.set(Calendar.HOUR_OF_DAY, 0);   
  207.         now.set(Calendar.MINUTE, 0);   
  208.         now.set(Calendar.SECOND, 0);   
  209.         return now.getTime();   
  210.     }   
  211.        
  212.     /**  
  213.      * 系统当前时间过N个月后的时间  
  214.      * @param nextStep 月份偏移量  
  215.      * @return  
  216.      */  
  217.     public static Date getNextMonth(int nextStep){   
  218.         Calendar c = Calendar.getInstance();   
  219.         int m = c.get(Calendar.MONTH);   
  220.         c.set(Calendar.MONTH, m + nextStep);   
  221.         return c.getTime();   
  222.     }   
  223.   
  224.     /**  
  225.      * 计算给定时间推进一个月对应的时间  
  226.      * @param date 给定时间  
  227.      * @return 某时间过一个月后所在的时间  
  228.      */  
  229.     public static Date getNextMonthToday(Date date){   
  230.         Calendar c = Calendar.getInstance();   
  231.         c.setTime(date);   
  232.         c.set(Calendar.MONTH, c.get(Calendar.MONTH)+1);        
  233.         return c.getTime();   
  234.     }   
  235.        
  236.     /**  
  237.      * 获取系统当前时间所在的年份  
  238.      * @return  
  239.      */  
  240.     public static int getYear() {   
  241.         return Calendar.getInstance().get(Calendar.YEAR);   
  242.     }   
  243.        
  244.     /**  
  245.      * 获取给定时间所在的年份  
  246.      * @param date 时间  
  247.      * @return 时间所在的年份  
  248.      */  
  249.     public static int getYear(Date date){   
  250.         Calendar c = Calendar.getInstance();   
  251.         c.setTime(date);   
  252.         return c.get(Calendar.YEAR);   
  253.     }   
  254.   
  255.     /**  
  256.      * 获取某年分的最后一天结束的时间  
  257.      * @param year 年份  
  258.      * @return 指定年份的最后一天结束  
  259.      */  
  260.     public static Date getYearEnd(int year) {   
  261.         Calendar c = Calendar.getInstance();   
  262.         c.set(Calendar.YEAR, year);   
  263.         c.set(Calendar.MONTH,Calendar.DECEMBER);   
  264.         c.set(Calendar.DAY_OF_MONTH, 31);   
  265.         c.set(Calendar.HOUR_OF_DAY, 23);   
  266.         c.set(Calendar.MINUTE, 59);   
  267.         c.set(Calendar.SECOND, 59);   
  268.         return c.getTime();   
  269.     }   
  270.   
  271.     /**  
  272.      * 获取某年份的第一天凌晨  
  273.      * @param year 年份  
  274.      * @return 指定年份的第一天凌晨  
  275.      */  
  276.     public static Date getYearStart(int year) {   
  277.         Calendar c = Calendar.getInstance();   
  278.         c.set(Calendar.YEAR, year);   
  279.         c.set(Calendar.MONTH, Calendar.JANUARY);   
  280.         c.set(Calendar.DAY_OF_MONTH,1);   
  281.         c.set(Calendar.HOUR_OF_DAY, 0);   
  282.         c.set(Calendar.MINUTE, 0);   
  283.         c.set(Calendar.SECOND, 0);   
  284.         return c.getTime();   
  285.     }   
  286. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约