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);
|
}
|
}
|