package com.zy.common.utils; import com.core.common.DateUtils; import java.time.Duration; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.util.Date; public class YyyyMmddUtils { public static String convertYyyyMMdd() { return DateUtils.convert(new Date(), "MMdd"); } public static String convertYyyyMMdd(Date date) { return DateUtils.convert(date, "MMdd"); } public static long convertYyyyMMdd100000() { String convert = convertYyyyMMdd(); return 100000*(Long.valueOf(convert)); } public static long convertYyyyMMdd100000(Date date) { String convert = convertYyyyMMdd(date); return 100000*(Long.valueOf(convert)); } public static LocalTime convertToBeijingTime(Date date) { return date.toInstant() // Date -> Instant(时间戳) .atZone(ZoneId.of("Asia/Shanghai")) // 绑定北京时区(UTC+8) .toLocalTime(); // 提取时间部分 } public static LocalDateTime convert(Date date) { return date.toInstant() // 将 Date 转换为 Instant(时间戳) .atZone(ZoneId.systemDefault()) // 绑定系统默认时区 .toLocalDateTime(); // 提取无时区的日期时间 } // 基于 java.time 的实现(线程安全且简洁) public static long getSecondsOfDay(Date date) { // 1. 获取当天零点时间(系统时区) LocalDateTime startOfDay = LocalDateTime.now().with(LocalTime.MIN); // 2. 获取当前时间 LocalDateTime currentTime = convert(date); // 3. 计算时间差的秒数 long secondsSinceMidnight = Duration.between(startOfDay, currentTime).getSeconds(); return secondsSinceMidnight; } // 原方法改造(带 Date 参数) public static long convertPriL(Date data) { long ioPri = convertYyyyMMdd100000(data); long secondsOfDay = getSecondsOfDay(data); System.out.println(secondsOfDay); return ioPri + (1000000 - secondsOfDay); } // 重载方法(兼容无 Date 参数的调用) public static long convertYyyyMMdd1000000ioPri() { return convertPriL(new Date()); } // 重载方法(兼容无 Date 参数的调用) public static Integer convertPriI(Date date) { long datePri = convertPriL(date); return (int)datePri; } // 重载方法(兼容无 Date 参数的调用) public static Double convertPriD(Date date) { long datePri = convertPriL(date); return (double)datePri; } public static void main(String[] args) { Date now = new Date(); long resultl = YyyyMmddUtils.convertPriL(now); Integer resultI= YyyyMmddUtils.convertPriI(now); Double resultD = YyyyMmddUtils.convertPriD(now); System.out.println("resultl计算值:" + resultl); System.out.println("resultl计算值:" + (resultl+0.0)); System.out.println("resultl计算值:" + (double)resultl); System.out.println("resultI计算值:" + resultI); System.out.println("resultI计算值:" + resultI); System.out.println("resultD计算值:" + resultD); System.out.println("resultD计算值:" + resultD); } }