- 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;
- }
- }
- }
分享一个关于日期常用操作工具类
最新推荐文章于 2010-09-14 10:30:37 发布