我正在开发一个网络应用程序.当用户注册时,他们的注册日期时间需要准确地存储在数据库中,然后显示在网站管理员查看的前端中.
我想确保显示的DateTime是正确的from the perspective of the user viewing the page, regardless of their timezone.
如果一个用户在纽约中午注册,伦敦的某个人可能会看到"用户今天下午5点注册".这包括夏令时(如果适用).
在Spring Boot中,我使用这个注释来存储创建时间戳,并且我正在try 确定这里使用的类是否合适:
@CreationTimestamp
@Column(name = "created_at")
public OffsetDateTime created_at;
但想到这一点,我很困惑.我是否需要存储ZonedDateTime,或者我是否可以实际存储一个时间戳(Instant),然后根据发出请求的人稍后添加区域信息?使用上面的示例,这将是:
ZonedDateTime responseZonedDateTime = instant.atZone(ZoneId.of("Europe/London"));
这里的时区来自请求处理程序,例如
@GetMapping
public String getUser(TimeZone timezone) { }
这似乎需要做很多工作,也许还有更好的解决方案?
(如果与此相关,我使用的是PostgreSQL,列类型为TIMESTAMP WITH TIME ZONE
.)