时间序列化--SimpleDateFormat

本文详细介绍如何使用Java的SimpleDateFormat类将日期从一种格式转换到另一种格式,包括将字符串转换为Date对象,然后再转换回不同格式的字符串。示例展示了如何将2018-09-12 11:28:30格式的日期转换为20180912格式。
时间序列化
* 字符串--date--字符串
* 2018-09-12 11:28:30     ====>20180912
package com.carlinfo.bigdata;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间序列化
 * 字符串--date--字符串
 * 2018-09-12 11:28:30     ====>20180912
 */
public class Ops2
{
    public static void main(String[] args) throws ParseException
    {
        /**
         * 先new一个SimpleDateFormat,规定date格式
         */
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        /**
         * 对new出来的SimpleDateFormat进行parse解析,把要解析的字符串放进去
         */
        Date date = format1.parse("2018-09-12 11:28:30");
        /**
         * 再new一个SimpleDateFormat,用来规定最后输出的字符串
         */
        SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMdd");
        /**
         * 用format2的格式要求处理date
         */
        String res = format2.format(date);
        /**
         * 输出res
         */
        System.out.println(res);
    }
}

 

### SpringBoot 时间序列配置未生效解决方案 在SpringBoot中,时间序列的配置可能会因为多种原因导致不生效。以下是一些可能的解决方法和注意事项。 #### 1. 确保全局配置正确 在`application.properties`或`application.yml`中进行时间格式的全局配置时,需要确保使用的属性名称正确,并且没有被其他配置覆盖。例如,在`application.properties`文件中可以这样配置[^1]: ```properties spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 ``` 如果这些配置未生效,可能是由于某些自定义配置类或组件优先级高于默认配置。此时,可以尝试通过代码方式手动设置`ObjectMapper`。 #### 2. 自定义`ObjectMapper` 可以通过实现`WebMvcConfigurer`接口并重写相关方法来确保自定义的`ObjectMapper`被使用。例如: ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; @Configuration public class JacksonConfig { @Bean public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); objectMapper.registerModule(new JavaTimeModule()); objectMapper.setDateFormat(new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); return objectMapper; } } ``` 上述代码中,`JavaTimeModule`用于支持`java.time`包中的类型(如`LocalDateTime`),同时设置了日期格式[^1]。 #### 3. 避免自定义转换器冲突 如果项目中存在自定义的参数转换器(`Converter`),可能会导致`@DateTimeFormat`注解失效。这是因为Spring会优先使用自定义转换器处理时间类型的数据[^2]。为避免这种情况,可以在全局配置中禁用自定义转换器,或者调整其优先级。 #### 4. 检查依赖版本 确保使用的Spring Boot版本与Jackson版本兼容。某些旧版本可能存在Bug,导致时间格式配置无法正常工作。可以通过以下命令检查依赖版本: ```bash ./mvnw dependency:tree | grep jackson ``` 如果发现问题,可以尝试升级Spring Boot版本或显式指定Jackson版本。 #### 5. 使用`@JsonFormat`注解 对于特定字段的时间格式需求,可以直接在实体类中使用`@JsonFormat`注解。例如: ```java import com.fasterxml.jackson.annotation.JsonFormat; public class Event { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime eventTime; // Getter and Setter } ``` 这种方式适用于局部时间格式需求,但如果需要全局配置,则建议结合上述方法[^2]。 --- ### 示例代码:全局配置结合`@JsonFormat` ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.text.SimpleDateFormat; @Configuration public class JacksonGlobalConfig { @Bean public ObjectMapper objectMapper() { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerModule(new JavaTimeModule()); objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); return objectMapper; } } // 实体类示例 import com.fasterxml.jackson.annotation.JsonFormat; public class Event { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime eventTime; // Getter and Setter } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值