Skip to content

DateUtils 日期时间处理

cn.com.digitalhainan.tools.DateUtils

获取当前日期时间

java
import cn.com.digitalhainan.tools.DateUtils;

// 获取当前日期(Date类型)
Date currentDate = DateUtils.currentDate();

// 获取当前日期字符串(yyyy-MM-dd)
String today = DateUtils.getCurrentDate();  // 例如:2024-01-15

// 获取当前日期时间字符串(yyyy-MM-dd HH:mm:ss)
String now = DateUtils.getCurrentDatetime();  // 例如:2024-01-15 09:30:00

// 获取带毫秒的日期时间
String nowWithMs = DateUtils.getCurrentDateWithMilliSecond();  // 例如:2024-01-15 09:30:00.123

日期格式化

java
import cn.com.digitalhainan.tools.DateUtils;
import java.util.Date;

Date date = new Date();

// 格式化为 yyyy-MM-dd
String dateStr = DateUtils.formatDate(date);  // 2024-01-15

// 格式化为 yyyy-MM-dd HH:mm:ss
String datetimeStr = DateUtils.formatDateTime(date);  // 2024-01-15 09:30:00

// 使用指定格式
String customStr = DateUtils.formatDate(date, DateUtils.TimeFormat.SHORT_DATE_PATTERN_NONE);  // 20240115

日期解析

java
import cn.com.digitalhainan.tools.DateUtils;
import java.util.Date;

// 解析日期字符串(yyyy-MM-dd)
Date date = DateUtils.parseDate("2024-01-15");

// 解析日期时间字符串(yyyy-MM-dd HH:mm:ss)
Date datetime = DateUtils.parseDateTime("2024-01-15 09:30:00");

// 使用指定格式解析
Date customDate = DateUtils.parseDate("20240115", DateUtils.TimeFormat.SHORT_DATE_PATTERN_NONE);

日期加减运算

java
import cn.com.digitalhainan.tools.DateUtils;
import java.util.Date;

Date date = DateUtils.parseDateTime("2024-01-15 09:30:00");

// 加减天数(保留时分秒)
Date nextDay = DateUtils.addDayWithTime(date, 1);      // 2024-01-16 09:30:00
Date prevDay = DateUtils.addDayWithTime(date, -1);     // 2024-01-14 09:30:00

// 加减天数(时分秒置为0)
Date nextDayNoTime = DateUtils.addDayNoTime(date, 1);  // 2024-01-16 00:00:00

// 加减月份
Date nextMonth = DateUtils.addMonthWithTime(date, 1);  // 2024-02-15 09:30:00
Date nextMonthNoTime = DateUtils.addMonthNoTime(date, 1);  // 2024-02-15 00:00:00

// 加减年份
Date nextYear = DateUtils.addYearWithTime(date, 1);    // 2025-01-15 09:30:00

// 加减小时/分钟/秒
Date add2Hours = DateUtils.addHours(date, 2);          // 2024-01-15 11:30:00
Date add30Minutes = DateUtils.addMinutes(date, 30);    // 2024-01-15 10:00:00
Date add60Seconds = DateUtils.addSeconds(date, 60);    // 2024-01-15 09:31:00

日期比较

java
import cn.com.digitalhainan.tools.DateUtils;
import java.util.Date;

Date date1 = DateUtils.parseDate("2024-01-15");
Date date2 = DateUtils.parseDate("2024-01-20");

// 比较日期(只比较年月日,忽略时分秒)
boolean before = DateUtils.beforeDate(date1, date2);           // true
boolean beforeOrEqual = DateUtils.beforeOrEqualsDate(date1, date2);  // true
boolean after = DateUtils.afterDate(date1, date2);             // false
boolean afterOrEqual = DateUtils.afterOrEqualsDate(date1, date2);    // false

计算日期间隔

java
import cn.com.digitalhainan.tools.DateUtils;
import java.util.Date;

Date startDate = DateUtils.parseDate("2024-01-01");
Date endDate = DateUtils.parseDate("2024-01-15");

// 计算天数差
String days = DateUtils.daysBetween(startDate, endDate);  // "14"
int dayCount = DateUtils.getDayLength(startDate, endDate); // 14

友好时间显示

java
import cn.com.digitalhainan.tools.DateUtils;
import java.util.Date;

// 根据时间差返回友好描述
Date justNow = DateUtils.addSeconds(new Date(), -5);
String interval1 = DateUtils.getInterval(justNow);  // "刚刚"

Date fiveMinutesAgo = DateUtils.addMinutes(new Date(), -5);
String interval2 = DateUtils.getInterval(fiveMinutesAgo);  // "5分钟前"

Date twoHoursAgo = DateUtils.addHours(new Date(), -2);
String interval3 = DateUtils.getInterval(twoHoursAgo);  // "2小时前"

Date yesterday = DateUtils.addDayWithTime(new Date(), -1);
String interval4 = DateUtils.getInterval(yesterday);  // "1天前"

Date lastMonth = DateUtils.addMonthWithTime(new Date(), -1);
String interval5 = DateUtils.getInterval(lastMonth);  // "2024-01-15"(超过30天显示日期)

秒数转时间字符串

java
import cn.com.digitalhainan.tools.DateUtils;

// 将秒数转换为易读的时间格式
String time1 = DateUtils.secToTime(30);     // "30秒"
String time2 = DateUtils.secToTime(90);     // "1分30秒"
String time3 = DateUtils.secToTime(3661);   // "1时1分1秒"
String time4 = DateUtils.secToTime(90000);  // "大于1天"

计算年龄

java
import cn.com.digitalhainan.tools.DateUtils;

// 根据身份证号计算年龄
int age1 = DateUtils.getAgeByIDNumber("460200199001011234");  // 34

// 根据日期字符串计算年龄
int age2 = DateUtils.getAgeByDateString("1990-01-01");  // 34

// 根据Date计算年龄
Date birthday = DateUtils.parseDate("1990-01-01");
int age3 = DateUtils.getAgeByDate(birthday);  // 34

获取月份第一天和最后一天

java
import cn.com.digitalhainan.tools.DateUtils;
import java.util.Date;

// 获取指定月份的第一天
Date firstDay = DateUtils.getFirstDay("2024-01");  // 2024-01-01 00:00:00

// 获取指定月份的最后一天
Date lastDay = DateUtils.getLastDay("2024-01");    // 2024-01-31 00:00:00

// 获取上个月
Date lastMonth = DateUtils.getLastMonth();  // 上个月1号

时间格式枚举

枚举值格式
SHORT_DATE_PATTERN_LINEyyyy-MM-dd
LONG_DATE_PATTERN_LINEyyyy-MM-dd HH:mm:ss
LONG_DATE_PATTERN_WITH_MILSEC_LINEyyyy-MM-dd HH:mm:ss.SSS
SHORT_DATE_PATTERN_NONEyyyyMMdd
SHORT_DATE_PATTERN_FULL_NONEyyyyMMddHHmmss

Power By 数字海南