手动封装一个日期处理工具类,几乎覆盖了所有的时间操作(收藏)

这篇具有很好参考价值的文章主要介绍了手动封装一个日期处理工具类,几乎覆盖了所有的时间操作(收藏)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工具类包含以下方法:

  • - stringToDate: 将字符串转换为java.util.Date类型
  • - dateToString: 将java.util.Date类型转换为字符串
  • - stringToLocalDateTime: 将字符串转换为LocalDateTime类型
  • - localDateTimeToString: 将LocalDateTime类型转换为字符串
  • - dateToLocalDateTime: 将java.util.Date类型转换为LocalDateTime类型
  • - localDateTimeToDate: 将LocalDateTime类型转换为java.util.Date类型
  • - addDate: 在java.util.Date类型日期上增加或减少指定时间
  • - addLocalDateTime: 在LocalDateTime类型日期上增加或减少指定时间

废话就不说了,直接上代码,建议收藏,实用的话帮忙点个赞!

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class DateUtil {

    /**
     * 将字符串转换为java.util.Date类型
     *
     * @param strDate 日期字符串
     * @param format  日期格式
     * @return java.util.Date类型日期
     * @throws ParseException 解析异常
     */
    public static Date stringToDate(String strDate, String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.parse(strDate);
    }

    /**
     * 将java.util.Date类型转换为字符串
     *
     * @param date   java.util.Date类型日期
     * @param format 日期格式
     * @return 日期字符串
     */
    public static String dateToString(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

    /**
     * 将字符串转换为LocalDateTime类型
     *
     * @param strDate 日期字符串
     * @param format  日期格式
     * @return LocalDateTime类型日期
     */
    public static LocalDateTime stringToLocalDateTime(String strDate, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return LocalDateTime.parse(strDate, formatter);
    }

    /**
     * 将LocalDateTime类型转换为字符串
     *
     * @param localDateTime LocalDateTime类型日期
     * @param format        日期格式
     * @return 日期字符串
     */
    public static String localDateTimeToString(LocalDateTime localDateTime, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return localDateTime.format(formatter);
    }

    /**
     * 将java.util.Date类型转换为LocalDateTime类型
     *
     * @param date java.util.Date类型日期
     * @return LocalDateTime类型日期
     */
    public static LocalDateTime dateToLocalDateTime(Date date) {
        return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
    }

    /**
     * 将LocalDateTime类型转换为java.util.Date类型
     *
     * @param localDateTime LocalDateTime类型日期
     * @return java.util.Date类型日期
     */
    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     * 在java.util.Date类型日期上增加或减少指定时间
     *
     * @param date   java.util.Date类型日期
     * @param field  时间类型,如Calendar.MINUTE,Calendar.HOUR,Calendar.DATE等
     * @param amount 增加或减少的时间数值
     * @return 增加或减少后的java.util.Date类型日期
     */
    public static Date addDate(Date date, int field, int amount) {
        java.util.Calendar cal = java.util.Calendar.getInstance();
        cal.setTime(date);
        cal.add(field, amount);
        return cal.getTime();
    }

    /**
     * 在LocalDateTime类型日期上增加或减少指定时间
     *
     * @param localDateTime LocalDateTime类型日期
     * @param field         时间类型,如ChronoUnit.MINUTES,ChronoUnit.HOURS,ChronoUnit.DAYS等
     * @param amount        增加或减少
 * @return 增加或减少后的LocalDateTime类型日期
 */
public static LocalDateTime addLocalDateTime(LocalDateTime localDateTime, int field, int amount) {
    switch (field) {
        case java.time.temporal.ChronoUnit.SECONDS:
            return localDateTime.plusSeconds(amount);
        case java.time.temporal.ChronoUnit.MINUTES:
            return localDateTime.plusMinutes(amount);
        case java.time.temporal.ChronoUnit.HOURS:
            return localDateTime.plusHours(amount);
        case java.time.temporal.ChronoUnit.DAYS:
            return localDateTime.plusDays(amount);
        case java.time.temporal.ChronoUnit.WEEKS:
            return localDateTime.plusWeeks(amount);
        case java.time.temporal.ChronoUnit.MONTHS:
            return localDateTime.plusMonths(amount);
        case java.time.temporal.ChronoUnit.YEARS:
            return localDateTime.plusYears(amount);
        default:
            throw new IllegalArgumentException("无效时间类型");
    }
}
}

以下是使用该工具类的示例代码:

import java.util.Date;
import java.time.LocalDateTime;

public class TestDateTimeUtils {
    public static void main(String[] args) {
        // 将字符串转换为Date类型
        Date date = DateTimeUtils.stringToDate("2023-04-27 14:23:30", "yyyy-MM-dd HH:mm:ss");
        System.out.println(date);
        
        // 将Date类型转换为字符串
        String dateString = DateTimeUtils.dateToString(date, "yyyy-MM-dd HH:mm:ss");
        System.out.println(dateString);
        
        // 将字符串转换为LocalDateTime类型
        LocalDateTime localDateTime = DateTimeUtils.stringToLocalDateTime("2023-04-27 14:23:30", "yyyy-MM-dd HH:mm:ss");
        System.out.println(localDateTime);
        
        // 将LocalDateTime类型转换为字符串
        String localDateTimeString = DateTimeUtils.localDateTimeToString(localDateTime, "yyyy-MM-dd HH:mm:ss");
        System.out.println(localDateTimeString);
        
        // 将Date类型转换为LocalDateTime类型
        LocalDateTime localDateTime2 = DateTimeUtils.dateToLocalDateTime(date);
        System.out.println(localDateTime2);
        
        // 将LocalDateTime类型转换为Date类型
        Date date2 = DateTimeUtils.localDateTimeToDate(localDateTime2);
        System.out.println(date2);
        
        // 在Date类型日期上增加或减少指定时间
        Date date3 = DateTimeUtils.addDate(date, java.util.Calendar.DATE, 1);
        System.out.println(date3);
        
        // 在LocalDateTime类型日期上增加或减少指定时间
        LocalDateTime localDateTime3 = DateTimeUtils.addLocalDateTime(localDateTime, java.time.temporal.ChronoUnit.DAYS, 1);
        System.out.println(localDateTime3);
    }
}

由于当前日期是2023-04-27,因此以下是上面示例代码的输出结果:

手动封装一个日期处理工具类,几乎覆盖了所有的时间操作(收藏)

 文章来源地址https://www.toymoban.com/news/detail-434113.html

到了这里,关于手动封装一个日期处理工具类,几乎覆盖了所有的时间操作(收藏)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包