我使用的是SpringBoot,以前解決過這個問題,按理說這個問題估計開發經驗1年的人都應該知道,可是你真的能理解這背後的真實緣由嗎?html
首先,我數據庫裏面存的是這樣:2019-04-10 02:21:30 當代碼走到這一句的時候,已經把數據取出來了web
Object result = method.invoke(sqlSession, args);
能夠看到,取出來以後自動爲我加了8小時spring
仔細看這一句sql
sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
大體就是,先找到我當前的時區 和 相對應UTC應該換算的相差時間,兩個時間相處理,就獲得瞭如今時區("Asia/Shanghai")的時間數據庫
網上的下面貼上解決辦法什麼改數據庫啊啥的,確定是能夠的,可是!咱們能夠要走向國際化的互聯網科技啊,萬一之後遍及全球了呢,因此這個時區仍是讓代碼來解決吧跨域
一言不合貼代碼,核心加粗了app
<!-- 日期格式化 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency>
@Configuration @EnableWebMvc public class WebAppConfig implements WebMvcConfigurer { /** * 解決跨域 * * @param registry */ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedHeaders("*").allowedMethods("*"); } @Bean public FilterRegistrationBean corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source)); bean.setOrder(0); return bean; } /** * 靜態資源映射 */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } /** * 解決亂碼問題 */ @Bean public HttpMessageConverter<String> responseBodyConverter() { StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8")); return converter; } /** * 添加到消息轉換器 * 控制時間格式化 */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(jackson2HttpMessageConverter()); } /** *定義時間格式轉換器 */ @Bean public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); converter.setObjectMapper(mapper); return converter; } /** * 設置url匹配模式 * setUseSuffixPatternMatch : 設置是不是後綴模式匹配,如「/user」是否匹配/user.*,默認真即匹配; * setUseTrailingSlashMatch : 設置是否自動後綴路徑模式匹配,如「/user」是否匹配「/user/」,默認真即匹配; */ @Override public void configurePathMatch(PathMatchConfigurer configurer) { //super.configurePathMatch(configurer); configurer.setUseSuffixPatternMatch(false); configurer.setUseTrailingSlashMatch(true); } }