개발 중에 데이터베이스에서 날짜 유형을 쿼리할 때 다음과 같은 상황과 같이 원하는 시간 형식이 아닌 경우가 많습니다.
제 데이터베이스에서는 이러한 날짜 관련 필드가 데이터 시간 형식으로 설정되어 있습니다. :
데이터 유형은 다음과 같습니다.
엔티티는 다음과 같이 구성됩니다.
기본 쿼리의 결과는 다음과 같습니다.
Help, what kind 형식은 이렇습니다. 전혀 제가 아닙니다. 원하는 연, 월, 일, 시, 분, 초입니다.
사실 이 문제를 해결하는 것은 매우 간단합니다. 단지 시간 형식이 잘못되었다는 것뿐입니다.
일반적으로 편의성과 통일성을 위해 전역 처리 날짜 형식을 설정하고 구성 파일에서 구성할 수 있습니다
애플리케이션 구성 파일에는 속성과 yaml의 두 가지 형식이 있다고 생각하여 다양한 형식에 필요한 코드를 준비했습니다.
속성 형식
# 设置全局的日期格式为年月日时分秒 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss # 世界标准时间,为了方式时差,需要+8小时 spring.jackson.time-zone=GMT+8
yaml 형식
물론 위 내용은 yaml 형식을 사용하는 경우 다음 구성을 사용할 수 있습니다.
spring jackson: date-format: yyyy-MM-dd HH:mm:ss #设置全局的日期格式为年月日时分秒 time-zone: GMT+8 #世界标准时间,为了方式时差,需要+8小时
이 구성 항목을 추가한 후 다음을 수행할 수 있습니다. 서비스를 다시 시작해 보세요. 이제 인터페이스를 다시 방문해 보세요.
원하는 시간 형식임을 알 수 있지만, 검색된 시간은 데이터베이스보다 8시간 더 깁니다.
시간대를 추가하면 발생하는 문제입니다. 시간대 구성 항목은 원본에 있습니다. 어떤 시간은 +8시간이므로 이 시간대 구성 항목은 개인 필요에 따라 구성되거나 구성되지 않을 수 있습니다
전역 구성이 매우 인기가 있지만 때로는 전 세계가 통일된 형식을 유지하도록 강요할 수 없으며 개별 항목에 대해서만 시간 처리를 수행합니다
이때 시연의 편의를 위해 로컬 설정의 역할이 반영됩니다. 전역 설정을 주석 처리합니다.
Introduce pom
부분 설정에는 fastjson 종속성을 사용해야 하므로 종속성을 다운로드해야 합니다.
<!--fastjson--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency>
주석 추가
시간 형식이 필요한 필드에 주석 추가 :
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
두 개의 매개변수가 있습니다:
1: 패턴: 시간 형식
2: 시간대: 시간대
원리는 전역 설정의 두 매개변수와 동일합니다
여기서는 주석이 달린 하나를 꺼낼 것으로 추정합니다. 그리고 비교를 위한 주석이 없는 시간 속성 하나:
프로젝트를 다시 시작하고 인터페이스를 테스트하고, 두 날짜 형식을 비교합니다.
물론 전역 구성과 마찬가지로 주석의 매개변수도 다음에 따라 유연하게 선택됩니다. 여러분의 필요 사항:
예를 들어, 저는 여기에 시간대를 원하지 않고 연도, 월, 일 형식을 원합니다. 그런 다음 직접 변경하면 됩니다.
물론 결과는 어떻게 구성하느냐에 달려 있습니다. :
위 내용은 SpringBoot가 전역 및 지역 시간 형식 설정을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!