Chinaunix首页 | 论坛 | 博客
  • 博客访问: 165175
  • 博文数量: 56
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 593
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-18 09:59
文章分类

全部博文(56)

文章存档

2019年(1)

2018年(26)

2016年(1)

2015年(6)

2014年(22)

我的朋友

分类: Java

2018-06-29 15:49:00


这个日期工具类还是比较实用的,  日期加减用着特别方便

包含如下功能:
  • 时间格式的归一整理
  • 获取当前时间的时间戳
  • 日期转化为指定格式字符串
  • 时间加/减   这个是最方便的一个方法了 
  • 当前时间加/减
  • 时间戳转化为时间
  • 字符串时间, 按照指定格式转化为Date
  • 获取一个月的第一天
  • 获取一个月的最后第一天
  • 获取两个日期间的间隔天数


点击(此处)折叠或打开

  1. import org.apache.commons.lang.StringUtils;

  2. import java.text.SimpleDateFormat;
  3. import java.time.LocalDate;
  4. import java.time.format.DateTimeFormatter;
  5. import java.time.temporal.ChronoUnit;
  6. import java.util.Calendar;
  7. import java.util.Date;

  8. /**
  9.  */
  10. public class DateUtil {

  11.     public static final String YMDHMS = "yyyy-MM-dd HH:mm:ss";
  12.     public static final String YMDHM = "yyyy-MM-dd HH:mm";
  13.     public static final String YMDH = "yyyy-MM-dd HH";
  14.     public static final String YMD = "yyyy-MM-dd";
  15.     public static final String YM = "yyyy-MM";
  16.     public static final String MD = "MM-dd";
  17.     public static final String MDH = "MM-dd HH";
  18.     public static final String Y = "yyyy";
  19.     public static final String M = "MM";
  20.     public static final String D = "dd";
  21.     public static final String H = "HH";
  22.     public static final String BRANCH = "MM_dd_HH_mm_ss";
  23.     public static final String YMDHMSU = "yyyyMMddHHmmss";
  24.     public static final String YMDHMSS = "yyyyMMddHHmmssSSS";
  25.     public static final String YMDU = "yyyyMMdd";
  26.     public static final String YMDHMST = "yyyy-MM-dd'T'HH:mm:ss";


  27.     /**
  28.      * 转换到字符串
  29.      */
  30.     final public static Long curTimestamp() {

  31.         return new Date().getTime();
  32.     }


  33.     /**
  34.      * 转换到字符串
  35.      */
  36.     final public static String format(Date date, String type) {
  37.         if (date == null)
  38.             return "";
  39.         return new SimpleDateFormat(type).format(date);
  40.     }

  41.     /**
  42.      * 时间加 减
  43.      * @param date 日期
  44.      * @param field Calendar.XXX
  45.      * @param num 变化数值
  46.      * @return
  47.      */
  48.     final public static Date dateAdd(Date date, final int field, int num) {
  49.         if (date == null)
  50.             return null;
  51.         Calendar cal = Calendar.getInstance();
  52.         cal.setTime(date);
  53.         cal.add(field, num);
  54.         return cal.getTime();
  55.     }

  56.     /**
  57.      * 时间加 减
  58.      * @param field Calendar.XXX
  59.      * @param num 变化数值
  60.      * @return
  61.      */
  62.     final public static Date nowAdd(final int field, int num) {
  63.         Calendar cal = Calendar.getInstance();
  64.         cal.add(field, num);
  65.         return cal.getTime();
  66.     }




  67.     /**
  68.      * 将毫秒转成当前时间DATE类型
  69.      *
  70.      * @param millis
  71.      * @return
  72.      */
  73.     public static Date getDate(long millis) {
  74.         if (millis == 0L) {
  75.             return null;
  76.         }
  77.         return new Date(millis);
  78.     }

  79.     /**
  80.      * 将Str类型的Date转成Date
  81.      *
  82.      * @param dateStr
  83.      * @param patten
  84.      * @return
  85.      */
  86.     public static Date parse(String dateStr, String patten) {
  87.         if (StringUtils.isEmpty(dateStr) || StringUtils.isEmpty(patten)) {
  88.             return null;
  89.         }
  90.         SimpleDateFormat sdf = new SimpleDateFormat(patten);
  91.         try {
  92.             return sdf.parse(dateStr);
  93.         } catch (Exception e) {
  94.             return null;
  95.         }
  96.     }



  97.     /**
  98.      * 获取一个月的第一天
  99.      *
  100.      * @param month YYYYMM
  101.      * @return YYYY-MM-DD
  102.      */
  103.     public static Date getMonthFirstDay(int month) {
  104.         String dateStr = String.valueOf(month);
  105.         if (dateStr.length() != 6) {
  106.             throw new RuntimeException("month format not YYYYMM, can't get month");
  107.         }
  108.         String yearStr = dateStr.substring(0, 4);
  109.         String monthStr = dateStr.substring(4, 6);
  110.         return getDate(yearStr + "-" + monthStr + "-01", yyyy_MM_dd);
  111.     }


  112.     /**
  113.      * 获取一个月的最后第一天
  114.      *
  115.      * @param month YYYYMM
  116.      * @return YYYY-MM-DD
  117.      */
  118.     public static Date getMonthLastDay(int month) {
  119.         Date firstDate = getMonthFirstDay(month);
  120.         Calendar cDay = Calendar.getInstance();
  121.         cDay.setTime(firstDate);
  122.         final int lastDay = cDay.getActualMaximum(Calendar.DAY_OF_MONTH);
  123.         Date lastDate = cDay.getTime();
  124.         lastDate.setDate(lastDay);
  125.         return lastDate;
  126.     }



  127.     /**
  128.      * 获取两个日期间的间隔天数
  129.      * 比如20170910,20170911 间隔天数为1
  130.      *
  131.      * @param fromDate 起始日期 yyyyMMdd
  132.      * @param toDate 结束日期 yyyyMMdd
  133.      * @return 间隔天数
  134.      */
  135.     public static long getIntervalDays(Integer fromDate, Integer toDate) {
  136.         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
  137.         LocalDate from = LocalDate.parse(fromDate.toString(), formatter);
  138.         LocalDate to = LocalDate.parse(toDate.toString(), formatter);
  139.         return ChronoUnit.DAYS.between(from, to);
  140.     }




  141. }

阅读(1371) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~