使用 Intersystems 处理不同的时区

Posted

技术标签:

【中文标题】使用 Intersystems 处理不同的时区【英文标题】:Working with different timezones with Intersystems 【发布时间】:2021-12-09 00:42:19 【问题描述】:

我们正在尝试解决但应该能够理解的相当复杂的场景。

我们正在开发一个在具有特定时区的服务器上运行的任务执行器。

任务每天在定义的时间运行,但在不同的时区。

我们将在我们想要执行任务的时间和时区保存在数据库中(不要进入 UTC 陷阱,因为 DST 会在不同的实际时间进行保存)

如果从数据库打开任务时,我想做什么,将 02:00 Europe/Madrid 转换为 UTC 或本地(服务器)时间。

我找到了 HS.Timezone.Server.Service 类,但并没有完全解决问题。

系统间是否有任何方法可以将时间戳从时区转换为 UTC 或本地?

【问题讨论】:

不要去保存 UTC 陷阱,因为 DST 将在不同的实际时间进行” - 我想我不明白那部分;我的意思是,如果您保存 UTC 时间 + 某个时区 (IANA tz),您可以随时从 UTC 转换为该时区的时间,考虑到该 tz 的规则,不是吗? 如果我将执行时间保存在每天 04:00 UTC 欧洲/马德里... 我如何知道用户希望在什么时间执行任务?我知道我的用户想要 06:00 欧洲/马德里,无论 UTC 是什么,我每天需要计算的是,我需要在什么时间执行我的任务,所以现在是马德里的 06:00 【参考方案1】:

显然 Intersystems 产品不包含 tz 数据库,因此不可能直接进行。 解决方案是通过系统间 IRIS/Cache 的嵌入式机制调用 java 或 python。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于使用 Intersystems 处理不同的时区的主要内容,如果未能解决你的问题,请参考以下文章

DateTime.Now 和文化/时区特定

在 OLAP 计算期间使用哪些技术来处理不同的时区?

sql 使用%ResultSet.SQL对象查询结果。写在Intersystems缓存对象脚本中。

如何在不同的时区处理MYSQL NOW()?

在 Web 应用程序中有效地处理不同的时区

针对 InterSystems Caché 中 DeepSee MDX 查询的 JSON 数据