java日期转化,以及线程安全

线程安全的日期转换

package com.it.guli.mallorder.demos.web;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * @Description :
 * @Date : 2025/4/24
 * @Author :
 */
public class Util {
    private static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    private static final DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /**
     * date转String
     */
    public static String dateToString(Date date) {
        // 先转localDate线程安全,再转string
        LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        String format = localDate.format(dateFormatter);
        return format;
    }

    /**
     * string转 date
     */
    public static Date stringToDate(String date) {
        LocalDate localDate = LocalDate.parse(date, dateFormatter);
        return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
    }

    /**
     * time转String
     */
    public static String timeToString(Date date) {
        LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        String format = localDateTime.format(timeFormatter);
        return format;
    }


    /**
     * string转time
     */
    public static Date stringToTime(String date) {
        LocalDateTime localDate = LocalDateTime.parse(date, timeFormatter);
        return Date.from(localDate.atZone(ZoneId.systemDefault()).toInstant());
    }

}

测试

    public static void main(String[] args) {
        Date date = Util.stringToDate("2024-09-12");
        Date date2 = Util.stringToTime("2024-09-12 10:09:13");
        System.out.println(date);
        System.out.println(date2);
    }

输出:
Thu Sep 12 00:00:00 CST 2024
Thu Sep 12 10:09:13 CST 2024

posted @ 2025-04-24 17:28  spiderMan1-1  阅读(45)  评论(0)    收藏  举报