美文网首页组件使用
关于fastjson实现时间戳Long转为时间格式化

关于fastjson实现时间戳Long转为时间格式化

作者: Neo_xu | 来源:发表于2022-07-09 16:34 被阅读0次
    import com.alibaba.fastjson.serializer.ObjectSerializer;
    
    import java.io.IOException;
    import java.lang.reflect.Type;
    import java.time.Instant;
    import java.time.LocalDateTime;
    import java.time.ZoneId;
    import java.time.format.DateTimeFormatter;
    
    public class JSONSerializer implements ObjectSerializer {
        @Override
        public void write(com.alibaba.fastjson.serializer.JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) throws IOException {
            Long longObject = (Long)o;
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            LocalDateTime time  = Instant.ofEpochMilli((Long)longObject).atZone(ZoneId.systemDefault()).toLocalDateTime();
            jsonSerializer.write(time.format(dateTimeFormatter));
        }
    }
    
    
    import com.alibaba.fastjson.parser.DefaultJSONParser;
    import com.alibaba.fastjson.parser.JSONLexer;
    import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
    
    import java.lang.reflect.Type;
    import java.time.Instant;
    import java.time.LocalDateTime;
    import java.time.ZoneId;
    import java.time.format.DateTimeFormatter;
    
    
    /***
     * 时间格式序列化
     */
    public class JSONDateDeserializer implements ObjectDeserializer {
    
        @Override
        public String deserialze(DefaultJSONParser defaultJSONParser, Type type, Object o) {
            JSONLexer lexer = defaultJSONParser.getLexer();
            String timestamp = lexer.stringVal();
            Long longObject = Long.valueOf(timestamp);
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            LocalDateTime time  = Instant.ofEpochMilli((Long)longObject).atZone(ZoneId.systemDefault()).toLocalDateTime();
            return time.format(dateTimeFormatter);
        }
    
        @Override
        public int getFastMatchToken() {
            return 0;
        }
    }
    
        @ApiModelProperty(value="结束时间:时间戳,毫秒")
        @JSONField(deserializeUsing = JSONDateDeserializer.class,serializeUsing = JSONSerializer.class)
        Long endTime;
    

    相关文章

      网友评论

        本文标题:关于fastjson实现时间戳Long转为时间格式化

        本文链接:https://www.haomeiwen.com/subject/jfgdbrtx.html