【发布时间】:2017-05-02 11:47:21
【问题描述】:
我正在开发一个包含在 Windows CE 设备中的嵌入式网站。 把它看成是你路由器的网页配置界面。 一切都包含在非常小的内存中,整个网站的每个脚本、html、css 和图标都不到 500KB。
我们必须假设要“浏览”该界面的用户无法访问互联网(仅限 LAN),因此这里没有“在线”解决方案。
我正在寻找一种解决方案,以便用户选择他的时区,代码将获取至少未来 10-20 年的所有 DST/STD 时间和日期,并将它们下载到之后将自动运行的设备,并且在特定日期,将自行将其时间更改为 DST/STD。 当前应用程序是自定义的(与 windowce api 无关)并且需要 DST/STD 日期对。
iana.org 正在为世界上的每个位置维护一个数据库。我还看到 moment-timezone(javascript 界面)正在将这些数据“打包”在一个非常紧凑的 25kb 压缩包中。
我需要知道是否有可能:
- 从该数据库中“提取”一个主 tz 列表,以便用户可以选择自己的 tz。我查看了他们的文档,但示例无效:
var itsTimeZones = moment.tz.names();
2- 提取所选区域未来 10-20 年的 DST/STD 日期/时间?我在任何地方都没有看到关于这个主题的任何文档。但既然它是这样一个数据库的目的,我会说它一定是埋在那里的某个地方,需要一种方法来挖掘它。
3- 如果时刻时区不是正确的选择,那么任何人都有可以满足该要求的解决方案吗?
谢谢
【问题讨论】:
-
时区偶尔会改变它们的偏移量,有些地区会更改适用夏令时的规则,有些地区会采用它,有些地区会停止使用它。并非所有人都使用 1 小时偏移量。您只能假设当前的夏令时规则将适用于未来。您需要一个用于偏移量的时区数据库,当它们适用时,IANA 是一个好的开始,moment.js 可能是一个好的解决方案(但不是唯一的)。
-
您是否排除了将一个小 c# 程序集成到您的应用程序中的可能性?如果没有,Windows CE 已经有一个可用时区列表
-
没有 C# 带有 .net 紧凑框架(或类似的框架),所以在我们的内存占用方面真的不现实。
-
你在#1 上所说的“示例不起作用”是什么意思?我保持时刻时区,它工作正常,AFAIK。
-
另外,您确实意识到,即使我们根据当前规则预测 10 到 20 年的数据 - 规则本身也可能随时更改并且相对经常更改。如果您要求面向未来,那是不可能的。政客为所欲为,我们只能反映他们的选择。
标签: javascript date momentjs windows-ce dst