DateUtils日期格式工具类

Java代码   收藏代码
  1. package com.my.util;  
  2.   
  3. import java.text.DateFormat;  
  4. import java.text.ParseException;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Calendar;  
  7. import java.util.Date;  
  8. import java.util.GregorianCalendar;  
  9.   
  10. import org.apache.commons.lang.StringUtils;  
  11.   
  12. /** 
  13.  * 说明:日期工具类 
  14.  * @version 1.0 
  15.  */  
  16. public class DateUtils {  
  17.   
  18.     /** 
  19.      * @param yyyy-MM-dd 
  20.      * @return 
  21.      */  
  22.     public static final String patternA = "yyyy-MM-dd";  
  23.     /** 
  24.      * @param yyyyMMdd 
  25.      * @return 
  26.      */  
  27.     public static final String patternB = "yyyyMMdd";  
  28.     /** 
  29.      * @param yyyy-MM-dd HH-mm-ss 
  30.      * @return 
  31.      */  
  32.     public static final String patternC = "yyyy-MM-dd HH-mm-ss";  
  33.     /** 
  34.      * @param yyyy:MM:dd HH:mm:ss 
  35.      * @return 
  36.      */  
  37.     public static final String patternD = "yyyy-MM-dd HH:mm:ss";  
  38.     /** 
  39.      * @param yyyy-MM-dd HH:mm:ss 
  40.      * @return 
  41.      */  
  42.     public static final String patternE = "yyyy-MM-dd HH:mm";  
  43.       
  44.     /** 
  45.      * @param yyyyMMddHHmmss 
  46.      * @return 
  47.      */  
  48.     public static final String patternF = "yyyyMMddHHmmss";  
  49.       
  50.     public static final String patternG = "yyyy年MM月dd日";  
  51.       
  52.     /** 
  53.      * @param yyyy-MM 
  54.      * @return 
  55.      */  
  56.     public static final String patternH = "yyyy-MM";  
  57.       
  58.     public static final String patternI = "yyyyMM";  
  59.       
  60.       
  61.     /** 
  62.      * 格式化日期为yyyy-MM-dd 
  63.      * @param date 
  64.      * @return 
  65.      */  
  66.     public static String formateDate(Date date){  
  67.         return dateToString(date,patternA);  
  68.     }  
  69.       
  70.     /** 
  71.      * 格式化日期为yyyy-MM 
  72.      * @param date 
  73.      * @return 
  74.      */  
  75.     public static String formateYearAndMonth(Date date){  
  76.         return dateToString(date,patternH);  
  77.     }  
  78.       
  79.     /** 
  80.      * @param 取当天日期 
  81.      * @return 
  82.      */  
  83.     public static Date getDate() {  
  84.         return Calendar.getInstance().getTime();  
  85.     }  
  86.     /** 
  87.      * @param 取指定年月日的日期,格式为yyyy-MM-dd,HH-mm-ss 00-00-00 
  88.      * @return 
  89.      */  
  90.     public static Date getDate(int year, int month, int day) {  
  91.         Calendar cal = Calendar.getInstance();  
  92.         cal.set(year, month-1, day,0,0,0);  
  93.         return cal.getTime();  
  94.           
  95.     }  
  96.     /** 
  97.      * @param 取指定年,月,日,小时,分,秒的时间 
  98.      * @return 
  99.      */  
  100.     public static Date getDate(int year,int month,int date,int hour,int mintue,int second)  
  101.     {  
  102.         Calendar cal=Calendar.getInstance();  
  103.         cal.set(Calendar.YEAR,year);  
  104.         cal.set(Calendar.MONTH,month-1);  
  105.         cal.set(Calendar.DATE,date);  
  106.         cal.set(Calendar.HOUR_OF_DAY,hour);  
  107.         cal.set(Calendar.MINUTE,mintue);  
  108.         cal.set(Calendar.SECOND,second);  
  109.         return cal.getTime();  
  110.     }  
  111.   
  112.   
  113.     /** 
  114.      * @param days=n n为-,则取n天前,n为+,则取n天后的日期 
  115.      * @param date 
  116.      * @param days 
  117.      * @return 
  118.      */  
  119.     public static Date getSomeDaysBeforeAfter(Date date, int days){  
  120.         GregorianCalendar gc =new GregorianCalendar();  
  121.         gc.setTime(date);  
  122.         gc.add(5, days);  
  123.         gc.set(gc.get(Calendar.YEAR),gc.get(Calendar.MONTH),gc.get(Calendar.DATE));  
  124.         return gc.getTime();  
  125.     }  
  126.     /** 
  127.      * @param 取指定日期年份 
  128.      * @return 
  129.      */  
  130.     public static int getDateYear(Date date){  
  131.           
  132.         Calendar c = Calendar.getInstance();  
  133.         c.setTime(date);  
  134.         return c.get(Calendar.YEAR);  
  135.     }  
  136.     /** 
  137.      * @param 取指定日期月份 
  138.      * @return 
  139.      */  
  140.     public static int getDateMonth(Date date){  
  141.         Calendar c = Calendar.getInstance();  
  142.         c.setTime(date);  
  143.         return c.get(Calendar.MONTH)+1;  
  144.     }  
  145.     /** 
  146.      * @param 取指定日期日份 
  147.      * @return 
  148.      */  
  149.     public static int getDateDay(Date date){  
  150.         Calendar c = Calendar.getInstance();  
  151.         c.setTime(date);  
  152.         return c.get(Calendar.DATE);  
  153.     }     
  154.     /** 
  155.      * @param 取指定日期小时 
  156.      * @return 
  157.      */  
  158.     public static int getDateHour(Date date){  
  159.         Calendar c = Calendar.getInstance();  
  160.         c.setTime(date);  
  161.         return c.get(Calendar.HOUR_OF_DAY);  
  162.     }  
  163.     /** 
  164.      * @param 取指定日期分钟 
  165.      * @return 
  166.      */  
  167.     public static int getDateMinute(Date date){  
  168.         Calendar c = Calendar.getInstance();  
  169.         c.setTime(date);  
  170.         return c.get(Calendar.MINUTE);  
  171.     }  
  172.     /** 
  173.      * @param 取指定日期的第二天的开始时间,小时,分,秒为00:00:00 
  174.      * @return 
  175.      */  
  176.     public static Date getNextDayStartTime(Date date) {  
  177.         Calendar c = Calendar.getInstance();  
  178.         c.setTime(date);  
  179.         return getNextDayStart(c.get(Calendar.YEAR),  
  180.                 c.get(Calendar.MONTH)+1, c.get(Calendar.DATE));  
  181.     }  
  182.   
  183.   
  184.     /** 
  185.      * @param 取指定年,月,日的下一日的开始时间,小时,分,秒为00:00:00 
  186.      * @param 主要是用来取跨月份的日期 
  187.      * @return 
  188.      */  
  189.     public static Date getNextDayStart(int year, int monthIn, int date) {  
  190.         int month = monthIn - 1;  
  191.         boolean lastDayOfMonth = false;  
  192.         boolean lastDayOfYear = false;  
  193.           
  194.         Calendar time = Calendar.getInstance();  
  195.         time.set(year, month, date, 000);  
  196.         Calendar nextMonthFirstDay = Calendar.getInstance();  
  197.         nextMonthFirstDay.set(year, month + 11000);  
  198.           
  199.         if (time.get(Calendar.DAY_OF_YEAR) + 1 == nextMonthFirstDay.get(Calendar.DAY_OF_YEAR))  
  200.             lastDayOfMonth = true;  
  201.           
  202.         if (time.get(Calendar.DAY_OF_YEAR) == time.getMaximum(Calendar.DATE))  
  203.             lastDayOfYear = true;  
  204.           
  205.         time.roll(Calendar.DATE, 1);  
  206.           
  207.         if (lastDayOfMonth)  
  208.             time.roll(Calendar.MONTH, 1);  
  209.           
  210.         if (lastDayOfYear)  
  211.             time.roll(Calendar.YEAR, 1);  
  212.           
  213.           
  214.         return time.getTime();  
  215.     }  
  216.   
  217.     /** 
  218.      * @param 取指定日期的下一日的时间 
  219.      * @return 
  220.      */  
  221.     public static Date nextDate(Date date)  
  222.     {  
  223.         Calendar cal = Calendar.getInstance();  
  224.         cal.setTime(date);  
  225.         cal.add(Calendar.DATE,1);  
  226.         return cal.getTime();  
  227.     }  
  228.   
  229.     /** 
  230.      * @param 指定日期的下一日的开始时间,小时,分,秒为00:00:00 
  231.      * @return 
  232.      */  
  233.     public static Date getStartDateNext(Date date)  
  234.     {  
  235.         Calendar cal = Calendar.getInstance();  
  236.         cal.setTime(date);  
  237.         cal.add(Calendar.DATE,1);  
  238.         cal.set(Calendar.HOUR_OF_DAY,0);  
  239.         cal.set(Calendar.MINUTE,0);  
  240.         cal.set(Calendar.SECOND,0);  
  241.         return cal.getTime();  
  242.     }  
  243.   
  244.     /** 
  245.      * @param 指定日期的开始时间,小时,分,秒为00:00:00 
  246.      * @return 
  247.      */  
  248.     public static Date getStartDateDay(Date date)  
  249.     {  
  250.         if(date == null)  
  251.             return null;  
  252.         Calendar cal=Calendar.getInstance();  
  253.         cal.setTime(date);  
  254.         cal.set(Calendar.HOUR_OF_DAY,0);  
  255.         cal.set(Calendar.MINUTE,0);  
  256.         cal.set(Calendar.SECOND,0);  
  257.         return cal.getTime();  
  258.     }  
  259.   
  260.     /** 
  261.      * @param 指定日期的结束时间,小时,分,秒为23:59:59 
  262.      * @return 
  263.      */  
  264.     public static Date getEndDateDay(Date date)  
  265.     {  
  266.         if(date == null)  
  267.             return null;  
  268.         Calendar cal=Calendar.getInstance();  
  269.         cal.setTime(date);  
  270.         cal.set(Calendar.HOUR_OF_DAY,23);  
  271.         cal.set(Calendar.MINUTE,59);  
  272.         cal.set(Calendar.SECOND,59);  
  273.         return cal.getTime();  
  274.     }  
  275.       
  276.     /** 
  277.      * @param 将指定日期,以指定pattern格式,输出String值 
  278.      * @return 
  279.      */  
  280.     public static String dateToString(Date date ,String pattern) {  
  281.         if (date == null) {  
  282.             return "";  
  283.         } else {  
  284.             SimpleDateFormat format = new SimpleDateFormat(pattern);  
  285.             return format.format(date);  
  286.         }  
  287.     }  
  288.       
  289.     public static String dateToString1(Date date, String formatIn) {  
  290.         String format=formatIn;  
  291.         if (date == null) {  
  292.           return "";  
  293.         }  
  294.         if (format == null) {  
  295.           format = patternD;  
  296.         }  
  297.         java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(format);  
  298.         return sdf.format(date);  
  299.       }  
  300.   
  301.   
  302.     /** 
  303.      * @param 将指定年,月,日的日期转为字符型,格式为yyyy-MM-dd 
  304.      * @return 
  305.      */  
  306.     public static String dateToString(int year, int month, int day, String pattern) {  
  307.         return dateToString(getDate(year, month, day), pattern);  
  308.     }  
  309.   
  310.   
  311.     /** 
  312.      * @param 将指定字符型日期转为日期型,,格式为指定的pattern 
  313.      * @return 
  314.      */  
  315.     public static Date stringToDate(String string, String pattern){  
  316.         SimpleDateFormat format = (SimpleDateFormat)DateFormat.getDateInstance();  
  317.         format.applyPattern(pattern);  
  318.         try {  
  319.             return format.parse(string);  
  320.         } catch (ParseException e) {  
  321.             return null;  
  322.         }  
  323.     }  
  324.   
  325.     /** 
  326.      * @param 将指定字符型日期转为日期型,指定格式为yyyy-MM-dd 
  327.      * @return 
  328.      */  
  329.     public static Date stringToDate(String string){  
  330.         return stringToDate(string, patternA);  
  331.     }  
  332.   
  333.     /** 
  334.      * 获得两个日期之间间隔的天数 
  335.      * @param startDate 起始年月日 
  336.      * @param endDate 结束年月日 
  337.      * @return int 
  338.      */  
  339.     public static int getDays(Date startDate, Date endDate) {  
  340.         int elapsed = 0;  
  341.         Calendar cal = Calendar.getInstance();  
  342.         cal.setTime(startDate);  
  343.         Date d1 = cal.getTime();  
  344.           
  345.         cal.setTime(endDate);  
  346.         Date d2 = cal.getTime();  
  347.           
  348.         long daterange = d2.getTime() - d1.getTime();  
  349.         long time = 1000*3600*24//一天的毫秒数  
  350.         elapsed = (int) (daterange/time);  
  351.         return elapsed;  
  352.    }  
  353.     /** 
  354.      * @param date 
  355.      * @param startTime 格式为0800,表示上午8点00分 
  356.      * @param endTime格式为2200 
  357.      * @return 
  358.      */  
  359.     public static boolean isWorkHour(Date date,String startTimeIn,String endTimeIn){//是否是工作时间  
  360.         String startTime=startTimeIn;  
  361.         String endTime=endTimeIn;  
  362.         if(StringUtils.isEmpty(startTime))  
  363.             startTime = "0800";  
  364.         if(StringUtils.isEmpty(endTime))  
  365.             endTime = "2200";  
  366.         int start = Integer.parseInt(startTime);  
  367.         int end = Integer.parseInt(endTime);  
  368.         int hour = getDateHour(date);  
  369.         int m = getDateMinute(date);  
  370.         String hstr = hour<=9?"0"+hour:hour+"";  
  371.         String mstr = m<=9?"0"+m:m+"";  
  372.         int dateInt = Integer.parseInt(hstr+mstr);  
  373.         if(dateInt>=start&&dateInt<=end){  
  374.             return true;  
  375.         }  
  376.         return false;  
  377.     }  
  378.       
  379.     /** 
  380.      * @param  根据传入日期,返回此月有多少天 
  381.      * @param date 格式为  201408 
  382.      * @return 
  383.      */  
  384.     public static  int getDayOfMonth(String date){  
  385.         int year = Integer.parseInt(date.substring(03));  
  386.         int month = Integer.parseInt(date.substring(date.length()-1, date.length()));  
  387.           
  388.         Calendar cal = Calendar.getInstance();   
  389.         cal.set(Calendar.YEAR,year);   
  390.         cal.set(Calendar.MONTH, month-1);//Java月份才0开始算  6代表上一个月7月   
  391.         int dateOfMonth = cal.getActualMaximum(Calendar.DATE);  
  392.         return dateOfMonth;  
  393.     }  
  394.       
  395.     /** 
  396.      * @param 取指定日期月份前一月 
  397.      * @return 
  398.      */  
  399.     public static int getLastDateMonth(Date date){  
  400.         Calendar c = Calendar.getInstance();  
  401.         c.setTime(date);  
  402.         return c.get(Calendar.MONTH);  
  403.     }  
  404.     //取日期的当前月第一天  
  405.     public static Date getMonthFirstDay(Date date){  
  406.         return getDate(getDateYear(date), getDateMonth(date), 1);  
  407.     }  
  408.       
  409.     //前月第一天  
  410.     public static Date getLastDateMonthDay(Date date){  
  411.         return getDate(getDateYear(date), getLastDateMonth(date), 1);  
  412.     }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值