javascript - 为全球所有商店创建从上午 9 点开始的促销活动
问题描述
例如,假设全球所有商店的商店促销活动从上午 9 点开始。这意味着它在芝加哥的商店从 CST 上午 9 点开始,在西雅图的商店从太平洋标准时间上午 9 点开始,在英国的商店从格林威治标准时间上午 9 点开始。
在我们promotions
的 Postgres 表中,我们将此次促销的开始时间设置为 09:00:00。
每个商店都有一台带有网络浏览器的计算机,可以查找可用的促销活动。它需要将其本地时间传递给服务器,以便服务器可以返回该本地时间的所有促销活动。因此,我们需要找到一种方法来捕获 JavaScript 中的本地时间,对其进行编码,将其发送到 Java 后端,重构它,然后将其与promotions
表中的开始时间进行比较。
当然,当地时间取决于时区。如果芝加哥是上午 9 点,那么芝加哥的商店应该告诉服务器现在是上午 9 点。在没有时区指示的情况下发送 UTC 时间是徒劳的。
问题:在 JavaScript 中捕获本地时间(基于时区)的好方法是什么,对其进行编码,将其发送到 Java 后端,将其重构为 Java Date
,然后将该 JavaDate
与 Postgres 中的上午 9 点促销开始时间进行比较数据库?
我的(不满意)方法:我能想到的最好的方法是使用 JavaScript 的方法以毫秒为单位发送 UTC 时间Date.getTime
,以及时区偏移量,可以使用 JavaScript 的Date.getTimezoneOffset
方法以分钟为单位计算并转换为毫秒。从 UTC 时间中减去时区偏移量(以毫秒为单位),然后我们可以Date
从结果差中创建一个 Java 对象。如果是芝加哥的上午 9 点,那么希望 JavaDate
将存储上午 9 点。然而,这种方法有点奇怪的是,JavaDate
实际上会存储 UTC 上午 9 点,尽管它代表的是 CST 上午 9 点。这只是我对这种方法不满意的原因之一。你能想出更好的办法吗?
解决方案
推荐阅读
- javascript - Webpack:如何更改导出模块的全局变量名称?
- angular - 使用 Get 而不是 Post 的 Angular 方式数据表
- ios - 如何将一个 Storyboard 的 ContainerView 链接到另一个 Storyboard 中的 ViewController?
- c# - 有没有办法将自定义枚举集合转换为另一个自定义枚举集合?
- python - 计算最大和最小特征值
- java - Primefaces 数据表不适用于过滤器 + 排序
- templates - 无法使用 vue js 在模板中处理 json 数据
- python - 通过不同的开始和结束分隔符拆分字符串
- node.js - 如何检测和记录我的 KnexJS 交易?
- python-3.x - 如何显示所有交互的交叉表?