| /** | 
|  * Copyright (c) 2015-2016, Chill Zhuang 庄骞 (smallchill@163.com). | 
|  * <p> | 
|  * Licensed under the Apache License, Version 2.0 (the "License"); | 
|  * you may not use this file except in compliance with the License. | 
|  * You may obtain a copy of the License at | 
|  * <p> | 
|  * http://www.apache.org/licenses/LICENSE-2.0 | 
|  * <p> | 
|  * Unless required by applicable law or agreed to in writing, software | 
|  * distributed under the License is distributed on an "AS IS" BASIS, | 
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  * See the License for the specific language governing permissions and | 
|  * limitations under the License. | 
|  */ | 
| package com.stylefeng.guns.core.util; | 
|   | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.apache.commons.lang3.time.DateFormatUtils; | 
| import org.apache.commons.lang3.time.DateUtils; | 
|   | 
| import java.sql.Timestamp; | 
| import java.text.DateFormat; | 
| import java.text.ParseException; | 
| import java.text.SimpleDateFormat; | 
| import java.util.Calendar; | 
| import java.util.Date; | 
| import java.util.TimeZone; | 
|   | 
| public class DateUtil { | 
|   | 
|     private static TimeZone tz = TimeZone.getTimeZone("GMT+8"); | 
|   | 
|     /** | 
|      * 获取YYYY格式 | 
|      */ | 
|     public static String getYear() { | 
|         return formatDate(new Date(), "yyyy"); | 
|     } | 
|   | 
|     /** | 
|      * 获取YYYY格式 | 
|      */ | 
|     public static String getYear(Date date) { | 
|         return formatDate(date, "yyyy"); | 
|     } | 
|   | 
|     /** | 
|      * 获取YYYY-MM-DD格式 | 
|      */ | 
|     public static String getDay() { | 
|         return formatDate(new Date(), "yyyy-MM-dd"); | 
|     } | 
|   | 
|     /** | 
|      * 获取YYYY-MM-DD格式 | 
|      */ | 
|     public static String getDay(Date date) { | 
|         return formatDate(date, "yyyy-MM-dd"); | 
|     } | 
|   | 
|     /** | 
|      * 获取YYYYMMDD格式 | 
|      */ | 
|     public static String getDays() { | 
|         return formatDate(new Date(), "yyyyMMdd"); | 
|     } | 
|   | 
|     /** | 
|      * 获取YYYYMMDD格式 | 
|      */ | 
|     public static String getDays(Date date) { | 
|         return formatDate(date, "yyyyMMdd"); | 
|     } | 
|   | 
|     /** | 
|      * 获取YYYY-MM-DD HH:mm:ss格式 | 
|      */ | 
|     public static String getTime() { | 
|         return formatDate(new Date(), "yyyy-MM-dd HH:mm:ss"); | 
|     } | 
|   | 
|     /** | 
|      * 获取YYYY-MM-DD HH:mm:ss.SSS格式 | 
|      */ | 
|     public static String getMsTime() { | 
|         return formatDate(new Date(), "yyyy-MM-dd HH:mm:ss.SSS"); | 
|     } | 
|   | 
|     /** | 
|      * 获取YYYYMMDDHHmmss格式 | 
|      */ | 
|     public static String getAllTime() { | 
|         return formatDate(new Date(), "yyyyMMddHHmmss"); | 
|     } | 
|   | 
|     /** | 
|      * 获取YYYY-MM-DD HH:mm:ss格式 | 
|      */ | 
|     public static String getTime(Date date) { | 
|         return formatDate(date, "yyyy-MM-dd HH:mm:ss"); | 
|     } | 
|   | 
|     public static String formatDate(Date date, String pattern) { | 
|         String formatDate = null; | 
|         if (StringUtils.isNotBlank(pattern)) { | 
|             formatDate = DateFormatUtils.format(date, pattern); | 
|         } else { | 
|             formatDate = DateFormatUtils.format(date, "yyyy-MM-dd"); | 
|         } | 
|         return formatDate; | 
|     } | 
|   | 
|     /** | 
|      * 日期比较,如果s>=e 返回true 否则返回false) | 
|      * | 
|      * @author luguosui | 
|      */ | 
|     public static boolean compareDate(String s, String e) { | 
|         if (parseDate(s) == null || parseDate(e) == null) { | 
|             return false; | 
|         } | 
|         return parseDate(s).getTime() >= parseDate(e).getTime(); | 
|     } | 
|   | 
|     /** | 
|      * 格式化日期 | 
|      */ | 
|     public static Date parseDate(String date) { | 
|         return parse(date, "yyyy-MM-dd"); | 
|     } | 
|   | 
|     /** | 
|      * 格式化日期 | 
|      */ | 
|     public static Date parseTimeMinutes(String date) { | 
|         return parse(date, "yyyy-MM-dd HH:mm"); | 
|     } | 
|   | 
|     /** | 
|      * 格式化日期 | 
|      */ | 
|     public static Date parseTime(String date) { | 
|         return parse(date, "yyyy-MM-dd HH:mm:ss"); | 
|     } | 
|   | 
|     /** | 
|      * 格式化日期 | 
|      */ | 
|     public static Date parse(String date, String pattern) { | 
|         try { | 
|             return DateUtils.parseDate(date, pattern); | 
|         } catch (ParseException e) { | 
|             e.printStackTrace(); | 
|             return null; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 格式化日期 | 
|      */ | 
|     public static String format(Date date, String pattern) { | 
|         return DateFormatUtils.format(date, pattern); | 
|     } | 
|   | 
|     /** | 
|      * 把日期转换为Timestamp | 
|      */ | 
|     public static Timestamp format(Date date) { | 
|         return new Timestamp(date.getTime()); | 
|     } | 
|   | 
|     /** | 
|      * 校验日期是否合法 | 
|      */ | 
|     public static boolean isValidDate(String s) { | 
|         return parse(s, "yyyy-MM-dd HH:mm:ss") != null; | 
|     } | 
|   | 
|     /** | 
|      * 校验日期是否合法 | 
|      */ | 
|     public static boolean isValidDate(String s, String pattern) { | 
|         return parse(s, pattern) != null; | 
|     } | 
|   | 
|     public static int getDiffYear(String startTime, String endTime) { | 
|         DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); | 
|         try { | 
|             int years = (int) (((fmt.parse(endTime).getTime() - fmt.parse( | 
|                     startTime).getTime()) / (1000 * 60 * 60 * 24)) / 365); | 
|             return years; | 
|         } catch (Exception e) { | 
|             // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 | 
|             return 0; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * <li>功能描述:时间相减得到天数 | 
|      */ | 
|     public static long getDaySub(String beginDateStr, String endDateStr) { | 
|         long day = 0; | 
|         SimpleDateFormat format = new SimpleDateFormat( | 
|                 "yyyy-MM-dd"); | 
|         Date beginDate = null; | 
|         Date endDate = null; | 
|   | 
|         try { | 
|             beginDate = format.parse(beginDateStr); | 
|             endDate = format.parse(endDateStr); | 
|         } catch (ParseException e) { | 
|             e.printStackTrace(); | 
|         } | 
|         day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000); | 
|         // System.out.println("相隔的天数="+day); | 
|   | 
|         return day; | 
|     } | 
|   | 
|     /** | 
|      * 得到n天之后的日期 | 
|      */ | 
|     public static Date getAfterDayDate(Integer daysInt) { | 
|   | 
|         Calendar canlendar = Calendar.getInstance(); // java.util包 | 
|         canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 | 
|         Date date = canlendar.getTime(); | 
|   | 
|         SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
|         String dateStr = sdfd.format(date); | 
|   | 
|         return date; | 
|     } | 
|     /** | 
|      * 得到n天之后的日期 | 
|      */ | 
|     public static String getAfterDayDate(String days, String pattern) { | 
|         int daysInt = Integer.parseInt(days); | 
|   | 
|         Calendar canlendar = Calendar.getInstance(); // java.util包 | 
|         canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 | 
|         Date date = canlendar.getTime(); | 
|   | 
|         SimpleDateFormat sdfd = new SimpleDateFormat(pattern == null ? "yyyy-MM-dd HH:mm:ss" : "yyyy-MM-dd"); | 
|         String dateStr = sdfd.format(date); | 
|   | 
|         return dateStr; | 
|     } | 
|   | 
|     /** | 
|      * 得到n天之后是周几 | 
|      */ | 
|     public static String getAfterDayWeek(String days) { | 
|         int daysInt = Integer.parseInt(days); | 
|   | 
|         Calendar canlendar = Calendar.getInstance(); // java.util包 | 
|         canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 | 
|         Date date = canlendar.getTime(); | 
|   | 
|         SimpleDateFormat sdf = new SimpleDateFormat("E"); | 
|         String dateStr = sdf.format(date); | 
|   | 
|         return dateStr; | 
|     } | 
|   | 
|     /** | 
|      * 得到系统日期 | 
|      * | 
|      * @return | 
|      */ | 
|     public static Date getDate() { | 
|         TimeZone.setDefault(tz); | 
|         return new Date(); | 
|     } | 
|   | 
|     /** | 
|      * 字符串日期转Date yyyy-MM-dd HH:mm:ss | 
|      * @param dateStr | 
|      * @return | 
|      */ | 
|     public static Date getDate_str3(String dateStr) { | 
|         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
|         sdf.setTimeZone(tz); | 
|         if ("".equals(dateStr)) { | 
|             dateStr = sdf.format(DateUtil.getDate()); | 
|         } | 
|         Date date = null; | 
|         try { | 
|             date = sdf.parse(dateStr); | 
|         } catch (ParseException e) { | 
|             e.printStackTrace(); | 
|         } | 
|         return date; | 
|     } | 
|   | 
|     /** | 
|      * 获取当前毫秒数 | 
|      * @return long | 
|      */ | 
|     public static long getCurMilli() { | 
|         long millisecond = 0; | 
|         Calendar cal = Calendar.getInstance(); | 
|         millisecond = cal.getTimeInMillis(); | 
|         return millisecond; | 
|     } | 
|   | 
|     /** | 
|      * 毫秒转Date | 
|      * @param dateStr | 
|      * @return | 
|      */ | 
|     public static Date getDate_strYMdHms(Long dateStr) { | 
|         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
|         if (dateStr == null) { | 
|             dateStr = DateUtil.getCurMilli(); | 
|         } | 
|         Date date = null; | 
|         try { | 
|             date = sdf.parse(sdf.format(new Date(dateStr))); | 
|         } catch (ParseException e) { | 
|             e.printStackTrace(); | 
|         } | 
|         return date; | 
|     } | 
|   | 
|     /** | 
|      * 得到系统Calendar日期 | 
|      * @return | 
|      */ | 
|     public static Calendar getCalendar() { | 
|         TimeZone.setDefault(tz); | 
|         Calendar cal = Calendar.getInstance(); | 
|         return cal; | 
|     } | 
|   | 
|     /** | 
|      * | 
|      * 获取之前几天日期 | 
|      * @param pattern yyyy-MM-dd(默认) | 
|      * @param few 之前几天 | 
|      */ | 
|     public static String beforeFewDayStr(String pattern, Integer few) { | 
|   | 
|         if(pattern == null || "".equals(pattern)){ | 
|             pattern = "yyyy-MM-dd"; | 
|         } | 
|         Calendar c = getCalendar(); | 
|         c.add(Calendar.DATE,-few); | 
|         return new SimpleDateFormat(pattern).format(c.getTime()); | 
|     } | 
|   | 
| } |