分享一个关于日期常用操作工具类

  1. public class DateUtils {   
  2.   
  3.     /**  
  4.      * 获取当前时间日期的字符串   
  5.      */  
  6.     public static String getCurrentDateStr(DateFormatType dateFormatType) {   
  7.         Date date = getCurrentDate();   
  8.         return (String) OpearationDate(date, dateFormatType.getValue());   
  9.     }   
  10.   
  11.     /**  
  12.      * 时间、日期格式化成字符串  
  13.      */  
  14.     public static String formatDate(Date date, DateFormatType dateFormatType) {   
  15.         return (String) OpearationDate(date, dateFormatType.getValue());   
  16.     }   
  17.   
  18.     /**  
  19.      * 从字符串解析成时间、日期  
  20.      */  
  21.     public static Date parseDate(String dateStr, DateFormatType dateFormatType) {   
  22.         return (Date) OpearationDate(dateStr, dateFormatType.getValue());   
  23.     }   
  24.   
  25.     /**  
  26.      * 获取当前系统时间(原始格式)  
  27.      */  
  28.     public static Date getCurrentDate() {   
  29.         Date date = new Date(System.currentTimeMillis());   
  30.         return date;   
  31.     }   
  32.   
  33.     /**  
  34.      * 获取当前日期的年、月、日、时、分、秒  
  35.      */  
  36.     public static int getCurrentTime(TimeFormatType timeFormatType) {   
  37.         return getTime(getCurrentDate(), timeFormatType);   
  38.     }   
  39.   
  40.     /**  
  41.      * 获取指定日期的年、月、日、时、分、秒  
  42.      */  
  43.     public static int getTime(Date date, TimeFormatType timeFormatType) {   
  44.         try {   
  45.             Calendar c = Calendar.getInstance();   
  46.             c.setTime(date);   
  47.             int type = timeFormatType.getValue();   
  48.             int i = c.get(type);   
  49.             return type == 2 ? i + 1 : i;   
  50.         } catch (Exception e) {   
  51.             throw new RuntimeException("获取失败", e);   
  52.         }   
  53.     }   
  54.   
  55.     /**  
  56.      * 获取指定日期的毫秒数  
  57.      */  
  58.     public static long getMillis(Date date) {   
  59.         java.util.Calendar c = java.util.Calendar.getInstance();   
  60.         c.setTime(date);   
  61.         return c.getTimeInMillis();   
  62.     }   
  63.   
  64.     /**  
  65.      * 日期相加、减操作  
  66.      *   
  67.      * 所返回结果单位为:天数  
  68.      */  
  69.     public static int operationDate(Date date, Date diffDate, DateOperationType dateOperationType) {   
  70.         long add = getMillis(date) + getMillis(diffDate);   
  71.         long diff = getMillis(date) - getMillis(diffDate);   
  72.         return (int) ((dateOperationType.getValue() ? add : diff) / (24 * 3600 * 1000));   
  73.     }   
  74.   
  75.     /**  
  76.      * 日期月份相加、减操作  
  77.      */  
  78.     public static Date operationDateOfMonth(Date date, int month, DateOperationType dateOperationType) {   
  79.         Calendar c = Calendar.getInstance();   
  80.         c.setTime(date);   
  81.         c.add(Calendar.MONTH, dateOperationType.getValue() ? month : month - (month * 2));   
  82.         return c.getTime();   
  83.     }   
  84.   
  85.     /**  
  86.      * 日期天数相加、减操作  
  87.      */  
  88.     public static Date operationDateOfDay(Date date, int day, DateOperationType dateOperationType) {   
  89.         Calendar c = Calendar.getInstance();   
  90.         c.setTime(date);   
  91.         long millis = c.getTimeInMillis();   
  92.         long millisOfday = day * 24 * 3600 * 1000;   
  93.         long sumMillis = dateOperationType.getValue() ? (millis + millisOfday) : (millis - millisOfday);   
  94.         c.setTimeInMillis(sumMillis);   
  95.         return c.getTime();   
  96.     }   
  97.   
  98.     private static Object OpearationDate(Object object, String formatStr) {   
  99.         if (object == null || null == formatStr || "".equals(formatStr)) {   
  100.             throw new RuntimeException("参数不能为空");   
  101.         }   
  102.         SimpleDateFormat format = new SimpleDateFormat(formatStr);   
  103.         try {   
  104.             if (object instanceof Date)   
  105.                 return format.format(object);   
  106.             else  
  107.                 return format.parse(object.toString());   
  108.         } catch (Exception e) {   
  109.             throw new RuntimeException("操作失败", e);   
  110.         }   
  111.   
  112.     }   
  113.   
  114.     public enum DateOperationType {   
  115.   
  116.         /**  
  117.          * 加操作  
  118.          */  
  119.         ADD(true),   
  120.   
  121.         /**  
  122.          * 减操作  
  123.          */  
  124.         DIFF(false);   
  125.   
  126.         private final boolean value;   
  127.   
  128.         DateOperationType(boolean operation) {   
  129.             this.value = operation;   
  130.         }   
  131.   
  132.         public boolean getValue() {   
  133.             return value;   
  134.         }   
  135.     }   
  136.   
  137.     public enum TimeFormatType {   
  138.   
  139.         YEAR(1), MONTH(2), DAY(5), HOUR(11), MINUTE(12), SECOND(13);   
  140.         private final int value;   
  141.   
  142.         TimeFormatType(int formatStr) {   
  143.             this.value = formatStr;   
  144.         }   
  145.   
  146.         public int getValue() {   
  147.             return value;   
  148.         }   
  149.     }   
  150.   
  151.     public enum DateFormatType {   
  152.         /**  
  153.          * 格式为:yyyy-MM-dd HH:mm:ss  
  154.          */  
  155.         DATE_FORMAT_STR("yyyy-MM-dd HH:mm:ss"),   
  156.         /**  
  157.          * 格式为:yyyyMMddHHmmss  
  158.          */  
  159.         SIMPLE_DATE_TIME_FORMAT_STR("yyyyMMddHHmmss"),   
  160.   
  161.         /**  
  162.          * 格式为:yyyy-MM-dd  
  163.          */  
  164.         SIMPLE_DATE_FORMAT_STR("yyyy-MM-dd"),   
  165.   
  166.         /**  
  167.          * 格式为:yyyy/MM/dd  
  168.          */  
  169.         SIMPLE_DATE_FORMAT_VIRGULE_STR("yyyy/MM/dd"),   
  170.   
  171.         /**  
  172.          * 格式为:HH:mm:ss  
  173.          */  
  174.         HOUR_MINUTE_SECOND("HH:mm:ss"),   
  175.   
  176.         /**  
  177.          * 格式为:HH:mm  
  178.          */  
  179.         HOUR_MINUTE("HH:mm");   
  180.   
  181.         private final String value;   
  182.   
  183.         DateFormatType(String formatStr) {   
  184.             this.value = formatStr;   
  185.         }   
  186.   
  187.         public String getValue() {   
  188.             return value;   
  189.         }   
  190.     }   
  191. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值