java - 需要在 spring-boot 应用程序中将 Json 输入中的本地日期保存到 oracle DB

标签 java json date date-conversion

我有字符串格式的 json 输入中的本地日期 dd-MM-yyyy HH:mm:ss 格式[让它是任何格式都没有问题],在 header 中有一个单独的字段时区[例如:CST、CDT等]。在java中,当我尝试创建具有此值和时区的日期时,它是使用我的系统[jvm running system]时区创建的。

我需要保留输入时区输入的确切日期和时间。 我该怎么做 ?

我什至尝试将带有 @DateTimeFormat 的日期对象放入 dto 而不是字符串中,但这不起作用。

我想要一个像这样的方法从输入日期字符串和时区获取本地日期。

public Date getLocalDate(String dateString, String localTimeZone) {

  SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a");   
  formatter.setTimeZone(TimeZone.getTimeZone(localTimeZone));        
  return formatter.parse(dateString);
}

输入:dateString:“20-04-2019 20:15:00 AM”localTimeZone:“CDT”。

预期输出:值为 20-04-2019 20:15:00 AM CDT 的日期对象。

实际输出:与 IST-CDT 相同的日期与 IST 时区的时差

最佳答案

对于 Date 对象的真正含义存在误解。自'01-01-1970 00:00:00 UTC'以来仅过了几毫秒。换句话说,它始终是 UTC 日期/时间,当您尝试打印它时,默认格式化程序会隐式将其转换为您的本地时区。

如果您想同时存储即时(即 UTC 日期/时间)和时区,则必须使用Calendar 对象。但无论如何,如果你想在 Oracle 中同时存储时间和时区,你应该直接存储一个字符串,或者一个日期和一个字符串(对于时区),因为据我所知,Oracle DATE 字段没有时区的概念。

关于java - 需要在 spring-boot 应用程序中将 Json 输入中的本地日期保存到 oracle DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55947759/

相关文章:

java - 在 Java 中的 JSON 对象中使用 JSON 数组

r - 使用 lubridate 在 R 中修改 POSIXct 格式的日期

java - 自定义测试结果监听器

java - 如何在我的电脑上获取我的应用程序 (Android) 存储的文件?

java - 尝试让一个鼠标监听器操作在另一个鼠标监听器操作开始之前停止

java - 在 Eclipse 中部署到 Tomcat 时排除 svn 目录

java - PropertyEditor 未根据 AJAX (JSON) 请求调用

json - 如何从flutter中的JSON对象获取特定值?

java - SimpleDateFormat 的日期解析不正确

Javascript 日期加 1 天