Java【问题记录 04】时间戳类型字符串{Timestamp@15601}2021-07-14 18:56:53.0变成带T的Object类型2021-07-14T10:56:53.000+0000

简介: Java【问题记录 04】时间戳类型字符串{Timestamp@15601}2021-07-14 18:56:53.0变成带T的Object类型2021-07-14T10:56:53.000+0000

两个平台,一个平台直接查询数据库,另一个平台通过接口调用查询数据,导致时间戳 Timestamp 格式字符串传输后变 yyyy-MM-ddTHH:mm:ss.000+0000 日期格式,出现这种问题的可能原因是:从数据库查询出来的数据没有进行封装,直接使用Map<String, Object>类型保存,导致值类型信息丢失,这是我调试过程中获取的时间字段TME的值:

code

# 最初获取到的格式【当然也是最终需要的格式】
TME -> {Timestamp@15601} "2021-07-14 18:56:53.0"
# 经过接口传输后变成了时间格式
TME -> 2021-07-14T10:56:53.000+0000
/**
     * 将带T的时间字符串转换为时间戳
     *
     * @param rowList 带转换列表
     * @return
     */
    private List<Map<String, Object>> formatTimePattern(List<Map<String, Object>> rowList) {
        String timeField = "TME";
        rowList.forEach(rowMap->{
            rowMap.forEach((key,val)->{
                if(timeField.equalsIgnoreCase(key)){
                    SimpleDateFormat from = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
                    Date fromParse = null;
                    try {
                        fromParse = from.parse(val.toString());
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                    assert fromParse != null;
                    Timestamp timestamp = new Timestamp(fromParse.getTime());
                    // 用时间戳覆盖之前的时间字符串
                    rowMap.put(key,timestamp);
                }
            });
        });
        return rowList;
    }

总结

时间字段的格式是一个令人头疼的问题,前后端和数据库有可能存放着三种不同类型的时间值。统一使用字符串类型有利于数据的存取展示,但是对数值的操作就不方便了,很多时候来回转换时间字段值的格式就让人奔溃落泪 😭 解决的办法是封装,让框架接管时间字段值的格式化任务。

目录
相关文章
|
12天前
|
存储 Java 编译器
深入理解 Java 泛型和类型擦除
【4月更文挑战第19天】Java泛型是参数化类型,增强安全性与可读性,但存在类型擦除机制。类型擦除保证与旧版本兼容,优化性能,但也导致运行时无法访问泛型信息、类型匹配问题及数组创建限制。为应对这些问题,可使用Object类、instanceof运算符,或借助Guava库的TypeToken获取运行时类型信息。
|
9天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
46 3
|
1天前
|
Java
Java String类型转换成Date日期类型
Java String类型转换成Date日期类型
|
1天前
|
关系型数据库 MySQL Java
Java时间转换为MySQL中的INT类型时间戳
Java时间转换为MySQL中的INT类型时间戳
|
1天前
|
Java 编译器
【Java探索之旅】解密Java中的类型转换与类型提升
【Java探索之旅】解密Java中的类型转换与类型提升
8 0
|
1天前
|
存储 Java C语言
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
8 0
|
2天前
|
Java
JAVA刷题之字符串的一些个人思路
JAVA刷题之字符串的一些个人思路
|
4天前
|
安全 Java 程序员
Java 泛型类型:变幻中的不变性
【4月更文挑战第21天】
4 1
Java 泛型类型:变幻中的不变性
|
5天前
|
XML SQL 前端开发
【Java】实体字段传参类型线上问题记录
【Java】实体字段传参类型线上问题记录
17 1
|
5天前
|
缓存 安全 Java
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
6 0