Java: 保存日期时间,不进行时间转换
Java: Save date time without time conversion
我正在使用 spring 引导和 mysql。
起初,我的时间字段之一使用 Date 类型,由于时区不同,我必须使用 @JsonFormat(shape=JsonFormat.Shape.STRING, pattern=Constant.DATE_TIME_FORMAT, timezone = "....")
来处理时间转换。然后我将它从 Date
更改为 LocalDateTime
以确保没有时间转换并从上面的注释中删除 timezone
属性。
但我错了,在UAT环境中,UI(swagger)中保存的输入数据在数据库中将'12:00:00'更改为'04:30:00'
然后我尝试通过调整我机器中的时区以及 mysql 服务器中的当前时区来进行测试。
这是几次尝试后的结果:
Back-end Timezone, Database Timezone | Result
- BE: +8:00, DB: +5:00 | 12 小时 -> 9 小时
- BE: +0:00, DB: +5:00 | 12 小时 -> 17 小时
- BE: +8:00, DB: +0:00 | 12 小时 -> 4 小时
table 列的数据类型是 time
因为我只是想保存和显示时间所以哪个日期并不重要所以我默认使用 1970-01-01
日期。
问题是由于 BE 和 DB 的时区不同,我不想进行任何时间转换,我希望保存在数据库中的数据与 UI 上的输入时间完全相同(UI: 12h -> DB: 12h).
这是我在实体中的字段:
@ApiModelProperty(example = "1970-01-01 12:00:00")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern=Constant.DATE_TIME_FORMAT)
private LocalDateTime monStartTime;
问题:BE和DB时区不同,有什么办法可以避免时间转换?
您可以在后端将字符串作为数据类型。
private Sting monStartTime;
无需更改数据库。数据库列应该是你已经拥有的时间。
试试这个。它不会转换您的时区。
我正在使用 spring 引导和 mysql。
起初,我的时间字段之一使用 Date 类型,由于时区不同,我必须使用 @JsonFormat(shape=JsonFormat.Shape.STRING, pattern=Constant.DATE_TIME_FORMAT, timezone = "....")
来处理时间转换。然后我将它从 Date
更改为 LocalDateTime
以确保没有时间转换并从上面的注释中删除 timezone
属性。
但我错了,在UAT环境中,UI(swagger)中保存的输入数据在数据库中将'12:00:00'更改为'04:30:00'
然后我尝试通过调整我机器中的时区以及 mysql 服务器中的当前时区来进行测试。 这是几次尝试后的结果:
Back-end Timezone, Database Timezone | Result
- BE: +8:00, DB: +5:00 | 12 小时 -> 9 小时
- BE: +0:00, DB: +5:00 | 12 小时 -> 17 小时
- BE: +8:00, DB: +0:00 | 12 小时 -> 4 小时
table 列的数据类型是 time
因为我只是想保存和显示时间所以哪个日期并不重要所以我默认使用 1970-01-01
日期。
问题是由于 BE 和 DB 的时区不同,我不想进行任何时间转换,我希望保存在数据库中的数据与 UI 上的输入时间完全相同(UI: 12h -> DB: 12h).
这是我在实体中的字段:
@ApiModelProperty(example = "1970-01-01 12:00:00")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern=Constant.DATE_TIME_FORMAT)
private LocalDateTime monStartTime;
问题:BE和DB时区不同,有什么办法可以避免时间转换?
您可以在后端将字符串作为数据类型。
private Sting monStartTime;
无需更改数据库。数据库列应该是你已经拥有的时间。
试试这个。它不会转换您的时区。