zoukankan      html  css  js  c++  java
  • 分享一个关于日期常用操作工具类

    public class DateUtils {

    /**
    * 获取当前时间日期的字符串
    */
    public static String getCurrentDateStr(DateFormatType dateFormatType) {
    Date date = getCurrentDate();
    return (String) OpearationDate(date, dateFormatType.getValue());
    }

    /**
    * 时间、日期格式化成字符串
    */
    public static String formatDate(Date date, DateFormatType dateFormatType) {
    return (String) OpearationDate(date, dateFormatType.getValue());
    }

    /**
    * 从字符串解析成时间、日期
    */
    public static Date parseDate(String dateStr, DateFormatType dateFormatType) {
    return (Date) OpearationDate(dateStr, dateFormatType.getValue());
    }

    /**
    * 获取当前系统时间(原始格式)
    */
    public static Date getCurrentDate() {
    Date date = new Date(System.currentTimeMillis());
    return date;
    }

    /**
    * 获取当前日期的年、月、日、时、分、秒
    */
    public static int getCurrentTime(TimeFormatType timeFormatType) {
    return getTime(getCurrentDate(), timeFormatType);
    }

    /**
    * 获取指定日期的年、月、日、时、分、秒
    */
    public static int getTime(Date date, TimeFormatType timeFormatType) {
    try {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    int type = timeFormatType.getValue();
    int i = c.get(type);
    return type == 2 ? i + 1 : i;
    } catch (Exception e) {
    throw new RuntimeException("获取失败", e);
    }
    }

    /**
    * 获取指定日期的毫秒数
    */
    public static long getMillis(Date date) {
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(date);
    return c.getTimeInMillis();
    }

    /**
    * 日期相加、减操作
    *
    * 所返回结果单位为:天数
    */
    public static int operationDate(Date date, Date diffDate, DateOperationType dateOperationType) {
    long add = getMillis(date) + getMillis(diffDate);
    long diff = getMillis(date) - getMillis(diffDate);
    return (int) ((dateOperationType.getValue() ? add : diff) / (24 * 3600 * 1000));
    }

    /**
    * 日期月份相加、减操作
    */
    public static Date operationDateOfMonth(Date date, int month, DateOperationType dateOperationType) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.add(Calendar.MONTH, dateOperationType.getValue() ? month : month - (month * 2));
    return c.getTime();
    }

    /**
    * 日期天数相加、减操作
    */
    public static Date operationDateOfDay(Date date, int day, DateOperationType dateOperationType) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    long millis = c.getTimeInMillis();
    long millisOfday = day * 24 * 3600 * 1000;
    long sumMillis = dateOperationType.getValue() ? (millis + millisOfday) : (millis - millisOfday);
    c.setTimeInMillis(sumMillis);
    return c.getTime();
    }

    private static Object OpearationDate(Object object, String formatStr) {
    if (object == null || null == formatStr || "".equals(formatStr)) {
    throw new RuntimeException("参数不能为空");
    }
    SimpleDateFormat format = new SimpleDateFormat(formatStr);
    try {
    if (object instanceof Date)
    return format.format(object);
    else
    return format.parse(object.toString());
    } catch (Exception e) {
    throw new RuntimeException("操作失败", e);
    }

    }

    public enum DateOperationType {

    /**
    * 加操作
    */
    ADD(true),

    /**
    * 减操作
    */
    DIFF(false);

    private final boolean value;

    DateOperationType(boolean operation) {
    this.value = operation;
    }

    public boolean getValue() {
    return value;
    }
    }

    public enum TimeFormatType {

    YEAR(1), MONTH(2), DAY(5), HOUR(11), MINUTE(12), SECOND(13);
    private final int value;

    TimeFormatType(int formatStr) {
    this.value = formatStr;
    }

    public int getValue() {
    return value;
    }
    }

    public enum DateFormatType {
    /**
    * 格式为:yyyy-MM-dd HH:mm:ss
    */
    DATE_FORMAT_STR("yyyy-MM-dd HH:mm:ss"),
    /**
    * 格式为:yyyyMMddHHmmss
    */
    SIMPLE_DATE_TIME_FORMAT_STR("yyyyMMddHHmmss"),

    /**
    * 格式为:yyyy-MM-dd
    */
    SIMPLE_DATE_FORMAT_STR("yyyy-MM-dd"),

    /**
    * 格式为:yyyy/MM/dd
    */
    SIMPLE_DATE_FORMAT_VIRGULE_STR("yyyy/MM/dd"),

    /**
    * 格式为:HH:mm:ss
    */
    HOUR_MINUTE_SECOND("HH:mm:ss"),

    /**
    * 格式为:HH:mm
    */
    HOUR_MINUTE("HH:mm");

    private final String value;

    DateFormatType(String formatStr) {
    this.value = formatStr;
    }

    public String getValue() {
    return value;
    }
    }
    }
  • 相关阅读:
    php根据时间显示刚刚,几分钟前,几小时前的实现代码
    PHP中获取当前页面的完整URL
    PhpExcel中文帮助手册|PhpExcel使用方法
    洛谷P1781 宇宙总统【排序+字符串】
    洛谷P1579 哥德巴赫猜想(升级版)【水题+素数】
    洛谷P1478 陶陶摘苹果(升级版)【水题】
    洛谷P1002 过河卒【dp】
    51Nod
    排序算法总结(C++)
    UVA1339
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400234.html
Copyright © 2011-2022 走看看