时间格式的转换【工具类】

java中各种时间格式的转换


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TimeStampUtil {
    // 定义两种日期格式的正则表达式
    //  第一种:2023-07-15
    private static final String DATE_PATTERN1 = "\\d{4}(?:[-/]\\d{2}){2}";
    //   第二种:20220100
    private static final String DATE_PATTERN2 = "\\d{8}";

    /**
     * 设置分区,示例,昨天:1L,今天0L
     *
     * @param number
     * @return
     */
    public static String timeStamp(Long number) {
        LocalDate localDate = LocalDate.now().minusDays(number);
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd");
        return dtf.format(localDate);
    }

    public static String timeStampLine(Long number) {
        LocalDate localDate = LocalDate.now().minusDays(number);
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return dtf.format(localDate);
    }
    /**
     * 设置分区正向添加,不想修改上面的文件所以新写一个,示例,昨天:1L,今天0L
     *
     * @param adjustValue
     * @return
     */
    public static String adjustTime(int adjustValue) {
        // 获取当前时间
        LocalDateTime now = LocalDateTime.now().plusDays(adjustValue);
        // 将调整后的时间转换为字符串格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        String adjustedTime = now.format(formatter);

        return adjustedTime;
    }
    /**
     * 将date类型转为string类型
     */
    public static String dateConvertString(Date time) {
        // 创建一个SimpleDateFormat对象,用于格式化日期
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        // 使用format方法将Date对象转换为String
        return formatter.format(time);
    }

    /**
     * 将string类型转为date类型,
     * 参数:amonut ,增加几天,输入几,比如1天输入1
     */
    public static Date stringConvertDate(String time, Integer amonut) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        try {
            // 使用parse方法将字符串类型的日期转换为Date类型
            Date date = format.parse(time);
            // 创建一个Calendar对象,用于操作日期和时间
            Calendar calendar = Calendar.getInstance();
            // 将Calendar对象设置为当前时间
            calendar.setTime(date);
            // 在当前时间的基础上增加1天
            calendar.add(Calendar.DATE, amonut);
            // 获取增加1天后的Date对象
            Date incrementedDate = calendar.getTime();
            return incrementedDate;
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

    }

    /**
     * 用来判断这种时间格式2020-11-07
     */
    public static Boolean extractDate(String input) {
        Boolean boolen = false;
        Pattern pattern1 = Pattern.compile(DATE_PATTERN1);
        Matcher matcher1 = pattern1.matcher(input);
        if (matcher1.find()) {
            return true;
        }
        return false;
    }

    /**
     * 用来判断这种时间格式20201107,是为true,不是:false
     *
     * @param input
     * @return
     */
    public static Boolean determineDate(String input) {
        Boolean boolen = false;
        Pattern pattern1 = Pattern.compile(DATE_PATTERN2);
        Matcher matcher1 = pattern1.matcher(input);
        if (matcher1.find()) {
            return true;
        }
        return false;
    }

    /**
     * 时间转换20201107->2020-11-07
     *
     * @param time
     * @return
     */
    public static String timeAndConversion(String time) {
        // 定义一个日期格式为yyyy-MM-dd的SimpleDateFormat对象
        SimpleDateFormat inputFormat = new SimpleDateFormat("yyyyMMdd");
        SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            // 将输入的日期字符串转换为Date对象
            Date date = inputFormat.parse(time);

            // 将Date对象转换为指定格式的日期字符串
            return outputFormat.format(date);
        } catch (Exception e) {
            // 如果发生异常,打印异常信息
            System.out.println("日期转换出错: " + e.getMessage());
        }
        return null;
    }

    /**
     * 时间相减的如:2023-11-16 - 2023-11-15 =1
     * source:2022-01-01
     * target:2022-01-02
     */
    public static Integer subtractionOfTime(String source, String target) {
        // 定义两个时间格式
        SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
        try {
            // 将日期字符串转换为Date对象
            Date parsedDate1 = dateFormat1.parse(source);
            Date parsedDate2 = dateFormat2.parse(target);

            // 计算两个日期之间的差值(以毫秒为单位)
            long differenceInMilliseconds = parsedDate2.getTime() - parsedDate1.getTime();

            // 将差值转换为天数
            Integer differenceInDays = Math.toIntExact(differenceInMilliseconds / (1000 * 60 * 60 * 24));

            // 输出结果
            System.out.println("两个日期相差 " + differenceInDays + " 天");
            return differenceInDays;
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return null;
    }
    /**
     * 获取当天时间
     */
    public static String getNowTime(){
        // 创建一个新的Date对象,表示当前时间
        Date currentDate = new Date();

        // 使用SimpleDateFormat类将Date对象格式化为"yyyy-MM-dd"格式的字符串
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate = dateFormat.format(currentDate);
        return formattedDate;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值