【问题标题】:Json object: is putting a date as string a bad practice?Json 对象:将日期作为字符串是一种不好的做法吗?
【发布时间】:2018-10-29 19:23:26
【问题描述】:

我有以下 json 对象:

public class User {
   private String name;
   @JsonFormat(pattern="dd-MM-yyyy")
   private Date birthdate;
}

但我正在考虑将其更改为:

private String birthdate; //mmm...now need to make sure the format is respected..

问题是这个对象必须保存在数据库中,然后再检索。 假设我有一个用户在 CEST 时间,而我的应用程序的时间是 UTC,所以落后了 2 小时。

他们发送“15-04-1990”(时间隐含为 00:00:00),然后系统将此日期解释为“14-04-1990”(时间隐含为 10:00:00 PM),因为2小时的差异。 当他们再次检索信息时,他们将看到 14-04-1990!

好的,我可以将发件人的时区添加到请求中。但我不喜欢这样:让居住在应用程序所在国家/地区的第 3 方想要检查一些信息(例如帮助台操作员):他们仍然会在错误的时区看到日期!

那么,您认为将日期作为字符串接收有什么问题吗? 如果可以的话,如何确保字符串包含格式为“dd-mm-yyyy”的日期?

【问题讨论】:

  • 我通常会将所有内容以 UTC 格式存储在后端,然后在客户端根据他们的时区/语言环境进行调整。
  • 问题是我们不是在谈论时间戳,这里我只想存储生日。用户会看到前一天...
  • 您是否要从 GMT 获取客户时区偏移?这篇文章向您展示了如何在 Java 中做到这两种方式。 stackoverflow.com/questions/16525617/…

标签: spring-mvc spring-boot jackson


【解决方案1】:

其中一件事可能是将日期和时间对象保存为 GMT 的时间戳,然后根据该时间戳更改每个时区。

【讨论】:

  • 我可以举个例子吗?
猜你喜欢
  • 2022-10-06
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 2013-07-13
相关资源
最近更新 更多