在 Spring Boot 項目里設置國區時區(也就是中國標準時間,即 Asia/Shanghai),可通過以下幾種方式實現:
方式一:在application.properties
或application.yml
里設置
application.properties
properties
spring.jackson.time-zone=Asia/Shanghai
application.yml
yaml
spring:jackson:time-zone: Asia/Shanghai
這里,借助 Spring Jackson 的配置來設定時區,此配置會影響 JSON 序列化和反序列化時的時間處理。
方式二:在 Java 代碼里設置默認時區
在 Spring Boot 應用的啟動類或者配置類里添加如下代碼:
java
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.TimeZone;@SpringBootApplication
public class YourApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(YourApplication.class, args);}@Overridepublic void run(String... args) throws Exception {TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));}
}
上述代碼把 Java 虛擬機的默認時區設置成了Asia/Shanghai
,這樣整個應用里涉及時間的操作都會采用這個時區。
方式三:在數據庫連接配置里設置時區
若你使用的是數據庫,在數據庫連接的 URL 里設置時區。以 MySQL 為例:
properties
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?serverTimezone=Asia/Shanghai
這樣做能保證數據庫與應用程序使用相同的時區,防止出現時間不一致的問題。
你可以依據項目的具體需求,選擇合適的方式來設置國區時區。
注意 一定不要在注解上配置
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8" ) private Date updateTime; 這種情況會導致 多個微服務轉換下 時間會算錯 多加八小時