61 lines
1.4 KiB
Java
61 lines
1.4 KiB
Java
package com.rj.common;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import com.rj.config.AppConfig;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.ZoneId;
|
|
import java.time.ZonedDateTime;
|
|
|
|
/**
|
|
* 时区工具类
|
|
* 提供统一的时区相关工具方法
|
|
*
|
|
* @author Auto Generated
|
|
* @since 2025-01-01
|
|
*/
|
|
@Component
|
|
public class TimeZoneUtils {
|
|
|
|
private static AppConfig appConfig;
|
|
|
|
@Autowired
|
|
public void setAppConfig(AppConfig appConfig) {
|
|
TimeZoneUtils.appConfig = appConfig;
|
|
}
|
|
|
|
/**
|
|
* 获取应用配置的时区ID
|
|
*
|
|
* @return ZoneId
|
|
*/
|
|
public static ZoneId getZoneId() {
|
|
String timezone = appConfig != null ? appConfig.getTimezone() : "Asia/Shanghai";
|
|
return ZoneId.of(timezone);
|
|
}
|
|
|
|
/**
|
|
* 获取当前时区的当前时间
|
|
*
|
|
* @return LocalDateTime
|
|
*/
|
|
public static LocalDateTime now() {
|
|
return ZonedDateTime.now(getZoneId()).toLocalDateTime();
|
|
}
|
|
|
|
/**
|
|
* 将指定时区的时间转换为应用时区的LocalDateTime
|
|
*
|
|
* @param zonedDateTime 带时区的时间
|
|
* @return LocalDateTime
|
|
*/
|
|
public static LocalDateTime toLocalDateTime(ZonedDateTime zonedDateTime) {
|
|
if (zonedDateTime == null) {
|
|
return null;
|
|
}
|
|
return zonedDateTime.withZoneSameInstant(getZoneId()).toLocalDateTime();
|
|
}
|
|
}
|
|
|