Java中公用日期工具类拿走、直接用

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

public class DateUtils {

    // 日期格式:yyyy-MM-dd
    private static final String DATE_FORMAT = "yyyy-MM-dd";
    // 日期时间格式:yyyy-MM-dd HH:mm:ss
    private static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    
    // 默认日期格式化对象
    private static final SimpleDateFormat dateFormatter = new SimpleDateFormat(DATE_FORMAT, Locale.getDefault());
    // 默认日期时间格式化对象
    private static final SimpleDateFormat dateTimeFormatter = new SimpleDateFormat(DATETIME_FORMAT, Locale.getDefault());

    static {
        // 设置默认时区为系统默认
        dateFormatter.setTimeZone(TimeZone.getDefault());
        dateTimeFormatter.setTimeZone(TimeZone.getDefault());
    }

    /**
     * 获取当前日期的字符串表示,格式为 yyyy-MM-dd
     * @return 当前日期的字符串表示
     */
    public static String getCurrentDateString() {
        return dateFormatter.format(new Date());
    }

    /**
     * 获取当前日期时间的字符串表示,格式为 yyyy-MM-dd HH:mm:ss
     * @return 当前日期时间的字符串表示
     */
    public static String getCurrentDateTimeString() {
        return dateTimeFormatter.format(new Date());
    }

    /**
     * 将字符串转换为日期对象,格式为 yyyy-MM-dd
     * @param dateString 日期字符串
     * @return 对应的日期对象
     * @throws ParseException 如果解析日期字符串失败
     */
    public static Date parseDate(String dateString) throws ParseException {
        return dateFormatter.parse(dateString);
    }

    /**
     * 将字符串转换为日期时间对象,格式为 yyyy-MM-dd HH:mm:ss
     * @param dateTimeString 日期时间字符串
     * @return 对应的日期时间对象
     * @throws ParseException 如果解析日期时间字符串失败
     */
    public static Date parseDateTime(String dateTimeString) throws ParseException {
        return dateTimeFormatter.parse(dateTimeString);
    }

    /**
     * 获取当前时间的毫秒值
     * @return 当前时间的毫秒值
     */
    public static long getCurrentTimeInMillis() {
        return System.currentTimeMillis();
    }

    /**
     * 根据日期计算日期差值(以天为单位)
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 日期差值(以天为单位)
     */
    public static long daysBetween(Date startDate, Date endDate) {
        long diffInMillis = endDate.getTime() - startDate.getTime();
        return diffInMillis / (1000 * 60 * 60 * 24);
    }

    /**
     * 获取某个月的第一天
     * @param year 年份
     * @param month 月份(1-12)
     * @return 该月份的第一天
     */
    public static Date getFirstDayOfMonth(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month - 1, 1, 0, 0, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 获取某个月的最后一天
     * @param year 年份
     * @param month 月份(1-12)
     * @return 该月份的最后一天
     */
    public static Date getLastDayOfMonth(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month - 1, 1);
        calendar.add(Calendar.MONTH, 1);
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 添加指定天数到某个日期
     * @param date 原始日期
     * @param days 要添加的天数
     * @return 新的日期
     */
    public static Date addDays(Date date, int days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, days);
        return calendar.getTime();
    }

    /**
     * 获取两个日期之间的差异(以秒为单位)
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 日期差异(以秒为单位)
     */
    public static long secondsBetween(Date startDate, Date endDate) {
        long diffInMillis = endDate.getTime() - startDate.getTime();
        return diffInMillis / 1000;
    }
}

说明:

  1. 日期格式和时间格式

    • 使用 SimpleDateFormat 进行日期和时间的格式化和解析。
    • DATE_FORMATDATETIME_FORMAT 定义了日期和日期时间的格式。
  2. 常用方法

    • getCurrentDateString()getCurrentDateTimeString():获取当前日期和时间的字符串表示。
    • parseDate()parseDateTime():将字符串解析为 Date 对象。
    • getCurrentTimeInMillis():获取当前时间的毫秒值。
    • daysBetween():计算两个日期之间的天数。
    • getFirstDayOfMonth()getLastDayOfMonth():获取某个月的第一天和最后一天。
    • addDays():在某个日期上添加指定的天数。
    • secondsBetween():计算两个日期之间的秒数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值