使用DateUtils处理时间日期转换

来源:互联网 发布:淘宝评价后多久生效 编辑:程序博客网 时间:2024/05/24 05:45
  1. public class DateUtils {  
  2.     public static final long ONE_DAY_LONG = 86400000;  
  3.     private static DateUtils classInstance = new DateUtils();  
  4.   
  5.     public static DateUtils getInstance() {  
  6.         return classInstance;  
  7.     }  
  8.   
  9.       
  10.     /** 
  11.      * Timestamp时间类型转换String 
  12.      *  Created on 2014-6-6  
  13.      * <p>Discription:[]</p> 
  14.      * @author:[] 
  15.      * @update:[日期YYYY-MM-DD] [更改人姓名] 
  16.      * @param time 
  17.      * @param pattern 
  18.      * @return String 
  19.      */  
  20.     public static String timestamp2string(Timestamp time, String pattern) {  
  21.         Date d = new Date(time.getTime());  
  22.   
  23.         if (pattern == null) {  
  24.             pattern = "yyyy-MM-dd HH:mm:ss";  
  25.         }  
  26.         return DateFormatUtils.format(d, pattern);  
  27.     }  
  28.   
  29.     /** 
  30.      * Date时间类型转换String 
  31.      *  Created on 2014-6-6  
  32.      *  时间格式yyyy-MM-dd HH:mm 
  33.      * @param date 
  34.      * @param pattern 
  35.      * @return String 
  36.      */  
  37.     public static String formatDate(Date date, String pattern) {  
  38.         if (date == null) {  
  39.             date = new Date(System.currentTimeMillis());  
  40.         }  
  41.   
  42.         if (pattern == null) {  
  43.             pattern = "yyyy-MM-dd HH:mm";  
  44.         }  
  45.         return DateFormatUtils.format(date, pattern);  
  46.     }  
  47.       
  48.     /** 
  49.      * date传null获取当前时间 
  50.      * 时间格式yyyy-MM-dd HH:mm 
  51.      *  Created on 2014-6-6  
  52.      * @param date 
  53.      * @return String 
  54.      */  
  55.     public static String defaultFormat(Date date) {  
  56.         return formatDate(date, null);  
  57.     }  
  58.   
  59.     /** 
  60.      * 获取当前时间Date类型 
  61.      *  Created on 2014-6-6  
  62.      * @return Date 
  63.      */  
  64.     public static Date parseDateFormat() {  
  65.         SimpleDateFormat fo = new SimpleDateFormat();  
  66.         Date date = new java.util.Date(System.currentTimeMillis());  
  67.         fo.applyPattern("yyyy-MM-dd");  
  68.   
  69.         try {  
  70.             date = fo.parse(DateFormatUtils.format(date, "yyyy-MM-dd"));  
  71.         } catch (Exception e) {  
  72.         }  
  73.   
  74.         return date;  
  75.     }  
  76.   
  77.     /** 
  78.      * 根据Timestamp类型返回2014-06-06格式String 
  79.      *  Created on 2014-6-6  
  80.      * @param time 
  81.      * @return String 
  82.      */  
  83.     public static String parseTimestampFormat(Timestamp time) {  
  84.   
  85.         if (time != null && !time.equals("")) {  
  86.   
  87.             return parseDateFormat(new Date(time.getTime()));  
  88.   
  89.         } else {  
  90.   
  91.             return "";  
  92.         }  
  93.   
  94.     }  
  95.   
  96.     /** 
  97.      * 根据Date转换String格式yyyy-MM-dd 
  98.      *  Created on 2014-6-6  
  99.      * @param date 
  100.      * @return String 
  101.      */  
  102.     public static String parseDateFormat(Date date) {  
  103.         SimpleDateFormat fo = new SimpleDateFormat();  
  104.         fo.applyPattern("yyyy-MM-dd");  
  105.         String retVal = "0000-00-00";  
  106.         try {  
  107.             retVal = DateFormatUtils.format(date, "yyyy-MM-dd");  
  108.         } catch (Exception e) {  
  109.         }  
  110.   
  111.         return retVal;  
  112.     }  
  113.   
  114.     /** 
  115.      * 根据String返回Timestamp 
  116.      *  Created on 2014-6-6  
  117.      * @param value 
  118.      * @return Timestamp 
  119.      */  
  120.     public static Timestamp formatFromYYYYMMDD(String value) {  
  121.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  122.         Date date = null;  
  123.         try {  
  124.             date = sdf.parse(value);  
  125.         } catch (ParseException e) {  
  126.             return null;  
  127.         }  
  128.         return new Timestamp(date.getTime());  
  129.     }  
  130.       
  131.     public static Timestamp formatFromYYYYMMDDhhmmss(String value) {  
  132.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  133.         Date date = null;  
  134.         try {  
  135.             date = sdf.parse(value);  
  136.         } catch (ParseException e) {  
  137.             return null;  
  138.         }  
  139.         return new Timestamp(date.getTime());  
  140.     }  
  141.   
  142.     public static Date string2Date(String str) {  
  143.         if (StringUtils.isEmpty(str))  
  144.             return new Date();  
  145.         return java.sql.Date.valueOf(str);  
  146.     }  
  147.   
  148.     public static boolean between(Date srcDate, Date startDate, Date endDate) {  
  149.         if (startDate.after(srcDate))  
  150.             return false;  
  151.         if (endDate.before(srcDate))  
  152.             return false;  
  153.         return true;  
  154.     }  
  155.   
  156.     public static Date getDayStart(Date date) {  
  157.         return string2Date(divideDateForDay(date, "yyyy-MM-dd"0));  
  158.         // return Timestamp.valueOf(formatDate(date, "yyyy-MM-dd")+" 00:00:00");  
  159.     }  
  160.       
  161.     /** 
  162.      * 根据传入时间在追加一天 
  163.      *  Created on 2014-6-6  
  164.      * @param date 
  165.      * @return 
  166.      */  
  167.     public static Date getDayEnd(Date date) {  
  168.         return string2Date(divideDateForDay(date, "yyyy-MM-dd"1));  
  169.         // return Timestamp.valueOf(formatDate(date, "yyyy-MM-dd")+" 23:59:59");  
  170.     }  
  171.   
  172.     /** 
  173.      * 给指定时间 追加天数 
  174.      *  Created on 2014-6-6  
  175.      * @param date   
  176.      * @param pattern   显示格式 
  177.      * @param num       需要加的天数 
  178.      * @return 
  179.      */  
  180.     public static String divideDateForDay(Date date, String pattern, int num) {  
  181.         if (date == null)  
  182.             date = new Date(System.currentTimeMillis());  
  183.         if (pattern == null)  
  184.             pattern = "yyyy-MM-dd HH:mm";  
  185.         Calendar cal = null;  
  186.         SimpleDateFormat fo = new SimpleDateFormat();  
  187.         fo.applyPattern(pattern);  
  188.         try {  
  189.             fo.format(date);  
  190.             cal = fo.getCalendar();  
  191.             cal.add(Calendar.DATE, num);  
  192.         } catch (Exception e) {  
  193.         }  
  194.         return fo.format(cal.getTime());  
  195.     }  
  196.   
  197.     /** 
  198.      * 算出两个时间的相差天数 
  199.      *  Created on 2014-6-6  
  200.      * @param dateBegin 
  201.      * @param dateEnd 
  202.      * @return 
  203.      */  
  204.     public static int subtrationDate(Date dateBegin, Date dateEnd) {  
  205.   
  206.         GregorianCalendar gc1 = new GregorianCalendar(dateBegin.getYear(),  
  207.                 dateBegin.getMonth(), dateBegin.getDate());  
  208.         GregorianCalendar gc2 = new GregorianCalendar(dateEnd.getYear(),  
  209.                 dateEnd.getMonth(), dateEnd.getDate());  
  210.         // the above two dates are one second apart  
  211.         Date d1 = gc1.getTime();  
  212.         Date d2 = gc2.getTime();  
  213.         long l1 = d1.getTime();  
  214.         long l2 = d2.getTime();  
  215.         long difference = l2 - l1;  
  216.         int date = (int) (difference / 24 / 60 / 60 / 1000);  
  217.         return date;  
  218.   
  219.     }  
  220.   
  221.     // 当前日期前几天或者后几天的日期  
  222.     public static Date afterNDay(int n) {  
  223.         Calendar c = Calendar.getInstance();  
  224.         c.setTime(new Date());  
  225.         c.add(Calendar.DATE, n);  
  226.         Date d2 = c.getTime();  
  227.         return d2;  
  228.     }  
  229.   
  230.     // 当前日期前几天或者后几天的日期  
  231.     public static Date afterNDays(Timestamp time, int n) {  
  232.         Calendar c = Calendar.getInstance();  
  233.         c.setTimeInMillis(time.getTime());  
  234.         c.add(Calendar.DATE, n);  
  235.         Date d2 = c.getTime();  
  236.         return d2;  
  237.     }  
  238.   
  239.     public static Timestamp transDate(Date date) {  
  240.         if (date != null) {  
  241.             long time = date.getTime();  
  242.             return new Timestamp(time);  
  243.         }  
  244.         return null;  
  245.     }  
  246.   
  247.     public static Date transTimestamp(Timestamp time) {  
  248.         if (time != null) {  
  249.             long t = time.getTime();  
  250.             return new Date(t);  
  251.         }  
  252.         return null;  
  253.     }  
  254.   
  255.     // 时间段的第一个时间  
  256.     public static java.sql.Timestamp stringToTime1(String d) {  
  257.         java.sql.Timestamp t = null;  
  258.         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
  259.   
  260.         Date d1;  
  261.         try {  
  262.             if (StringUtils.isNotEmpty(d)) {  
  263.                 d1 = df.parse(d);  
  264.                 t = new Timestamp(d1.getTime());  
  265.             }  
  266.         } catch (ParseException e) {  
  267.             e.printStackTrace();  
  268.         }  
  269.         return t;  
  270.     }  
  271.   
  272.     // 时间段的第二个时间  
  273.     public static java.sql.Timestamp stringToTime2(String d) {  
  274.         java.sql.Timestamp t = null;  
  275.         //StringUtils  
  276.         if (StringUtils.isNotEmpty(d)) {  
  277.             t = Timestamp.valueOf(d + " 23:59:59");  
  278.         }  
  279.         return t;  
  280.     }  
  281.   
  282.     public static Calendar getYesterDayBegin() {  
  283.         Calendar before = Calendar.getInstance();  
  284.   
  285.         before  
  286.                 .set(Calendar.DAY_OF_MONTH,  
  287.                         before.get(Calendar.DAY_OF_MONTH) - 1);  
  288.         before.set(Calendar.HOUR_OF_DAY, 0);  
  289.         before.set(Calendar.MINUTE, 0);  
  290.         before.set(Calendar.SECOND, 0);  
  291.         before.set(Calendar.MILLISECOND, 0);  
  292.   
  293.         return before;  
  294.     }  
  295.   
  296.     /** 
  297.      * 查看昨天的日期  还需要调用transCalendarToTimestamp方法 
  298.      *  Created on 2014-6-6  
  299.      * @return 
  300.      */  
  301.     public static Calendar getYesterDayEnd() {  
  302.         Calendar after = Calendar.getInstance();  
  303.         after.set(Calendar.DAY_OF_MONTH, after.get(Calendar.DAY_OF_MONTH) - 1);  
  304.         after.set(Calendar.HOUR_OF_DAY, 23);  
  305.         after.set(Calendar.MINUTE, 59);  
  306.         after.set(Calendar.SECOND, 59);  
  307.         after.set(Calendar.MILLISECOND, 999);  
  308.         return after;  
  309.     }  
  310.       
  311.     /** 
  312.      * Calendar和Timestamp转换 
  313.      * @param cal 
  314.      * @return 
  315.      */  
  316.     public static Timestamp transCalendarToTimestamp(Calendar cal)  
  317.     {  
  318.         Timestamp ts = new Timestamp(cal.getTimeInMillis());  
  319.         return ts;  
  320.     }  
  321.   
  322.     /** 
  323.      * 根据Timestamp类型参数  返回年后两位月日(例如:140606) 
  324.      *  Created on 2014-6-6  
  325.      * @param time 
  326.      * @return String 
  327.      */  
  328.     public static String transTimestamptostr(Timestamp time) {  
  329.         if (time != null) {  
  330.   
  331.             java.util.Calendar c = Calendar.getInstance();  
  332.             c.setTime(time);  
  333.             String year = String.valueOf(c.get(c.YEAR));  
  334.             String month = String.valueOf(c.get(c.MONTH) + 1);  
  335.             String day = String.valueOf(c.get(c.DATE));  
  336.   
  337.             if (month.length() < 2)  
  338.                 month = "0" + month;  
  339.             if (day.length() < 2)  
  340.                 day = "0" + day;  
  341.             return year.substring(24) + month + day;  
  342.   
  343.         }  
  344.         return null;  
  345.     }  
  346.       
  347.     /** 
  348.      * 根据Calendar日历返回String 
  349.      *  Created on 2014-6-6  
  350.      * @param cal 
  351.      * @return 
  352.      */  
  353.     public static String getDataString(Calendar cal)  
  354.     {  
  355.         Calendar now=cal;  
  356.         String time=now.get(Calendar.YEAR)+"-"+(now.get(Calendar.MONTH)+1)+"-"+now.get(Calendar.DAY_OF_MONTH)+" "+now.get(Calendar.HOUR_OF_DAY)+":"+now.get(Calendar.MINUTE)+":"+now.get(Calendar.SECOND);  
  357.         return time;  
  358.     }  
  359.       
  360.       
  361.     public static Calendar parseCalendarDate(String date) {  
  362.         Calendar d11 = new GregorianCalendar();  
  363.         Date d1 = null;  
  364.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");// 时间格式自己设置  
  365.         try { // 一定要放到try里面,不然会报错的  
  366.             d1 = sdf.parse(date);  
  367.         } catch (Exception e) {  
  368.         }  
  369.   
  370.         d11.setTime(d1); // OK了,d11就是结果了  
  371.         return d11;  
  372.     }  
  373.       
  374.     public static Timestamp calendar2Timestamp(Calendar cal){  
  375.         return new Timestamp(cal.getTimeInMillis());  
  376.     }  
  377.       
  378.     public static String getDatePath(){  
  379.         return DateHelper.CalendarToStrByMark(Calendar.getInstance(), "yyyyMMdd");  
  380.     }  
  381.     public static String getDatePath(Calendar cal,String pattern){  
  382.         if(pattern==null){  
  383.             pattern="yyyy-MM-dd hh:mm:ss";  
  384.         }  
  385.         SimpleDateFormat sf=new SimpleDateFormat(pattern);  
  386.         return sf.format(cal.getTime());  
  387.     }  
  388.     public static String getDateTimePath(){  
  389.         return DateHelper.CalendarToStrByMark(Calendar.getInstance(), "yyyyMMddHHmmss");  
  390.     }  
  391.       
  392.     //Date转化为Calendar  
  393.     public static Calendar date2Calendar(Date d){     
  394.         Calendar cal=Calendar.getInstance();  
  395.         cal.setTime(d);  
  396.         return cal;  
  397.     }  
  398.       
  399.     /** 
  400.      * 日期比较是否相等 
  401.      * @param d1 
  402.      * @param d2 
  403.      * @param type 比较方式,complete,date, 
  404.      * @return boolean 
  405.      * @author zhou jun 
  406.      */  
  407.     public static boolean compere(Date d1, Date d2, String type)  
  408.     {  
  409.         if(type.equals("date")){  
  410.             String pattern = "yyyy-MM-dd";  
  411.             String date1 = formatDate(d1, pattern);  
  412.             String date2 = formatDate(d2, pattern);  
  413.             //System.out.println(date1+date2);  
  414.             if(date1.equals(date2)){  
  415.                 return true;  
  416.             }  
  417.             return false;  
  418.         }  
  419.         else  
  420.         {  
  421.             return d1.equals(d2);  
  422.         }  
  423.     }  
  424.       
  425.     /**  
  426.      * 功能: 将日期对象按照某种格式进行转换,返回转换后的字符串  
  427.      *   
  428.      * @param date 日期对象  
  429.      * @param pattern 转换格式 例:yyyy-MM-dd 
  430.      * @author yanhechao  
  431.      */    
  432.     public static String DateToString(Date date, String pattern) {    
  433.         String strDateTime = null;    
  434.         SimpleDateFormat formater = new SimpleDateFormat(pattern);    
  435.         strDateTime = date == null ? null : formater.format(date);    
  436.         return strDateTime;    
  437.     }  

1 0