如何将LocalDate.now转换为CEST / CET LocalDate.now?

问题描述

我正在创建一个使用其他服务的新REST服务。对于每个请求,我都必须包含当前日期,并且该当前日期一定不能是过去的日期。 我正在使用LocalDate.Now()获取当前日期 问题是我不知道最终用户的时区,我用CEST时区来调用后端服务

由于对UTC的CEST是+2,因此如果用户在fx 9 AUG 23:00发送了新请求,则该请求将以日期8 AUG进入后端服务,但当天将是10 AUG 01: 00

如何将LocalDate.Now()转换为CEST / CET LocalDate.Now()?

解决方法

无法从HTTP请求中找到用户的时区:例如

一种解决方案是将用户的首选时区存储在用户的个人资料中,方法与存储名称,电子邮件地址和其他内容的方式相同。另一种解决方案是在客户端代码中找到时区,并将其作为请求参数传递。第三种解决方案(最不可靠)是对用户的IP地址进行地理定位。

找到时区后,在该时区中找到LocalDate很容易:

String userTimeZone = "Europe/Paris";
LocalDate userLocalDate = LocalDate.now(ZoneId.of(userTimeZone));