不懂就问,如何优雅的实现以下几个需求点:
- 允许最终用户自定义时区,所有页面展示的时间都应是用户对应时区的
- 用户可以选择时间进行筛选等操作,这些操作也要适配用户对应的时区
- 服务部署的机器时区不可控
- 数据库部署机器的时区不可控
- 存在定时任务,因此定时任务的触发必须跟随设定用户的时区
此处说部署不可控的意思是想要尽量在代码层面把事情解决,最好不要对服务器本身的时区、环境配置产生依赖,以免增加系统国际化部署时的难度。
场景: 一个西 6 区的用户,设置了一个 2020-01-01T00:00:00 执行的定时任务,那么该任务在某台东 8 区的服务器上,应该在 2020-01-01T14:00:00.000+08:00 时执行。
此时一个 0 区的用户,看到这个定时任务在 2020-01-01T06:00:00.000+00:00 执行了。如果这个用户筛选 2020-01-01 00:00:00 ~ 2020-01-01 23:59:59 的任务,则应当能看到该任务。
同时,若一个西 7 区的用户,使用 2020-01-01 00:00:00 ~ 2020-01-01 23:59:59 进行筛选,则看不到该任务。因为该任务在西 7 区的执行时间为 2019-12:31T23:00:00。