如何让客户实际时间和时区执行系统时间检查

Posted

技术标签:

【中文标题】如何让客户实际时间和时区执行系统时间检查【英文标题】:how to get clients actual time and timezone to perform system time check 【发布时间】:2017-07-11 16:28:30 【问题描述】:

这可能是一个非常模糊的问题,但请多多包涵。

我正在开发一个需要我在客户端机器上执行系统时间检查的应用程序。我要解决的问题是,当客户跨时区旅行并更改其系统时间而不是更改时区时,它会在 oauth 协商期间产生问题。我应该如何解决此问题,以便在客户端尝试登录应用程序时可以自行检测到此问题,而不必手动检测此类问题?

【问题讨论】:

【参考方案1】:

您可以在new DateTime.now() 上调用toUtc() 将其转换为UTC。如果它是 UTC,它应该不受时区的影响,并且字符串表示形式看起来像 "2013-10-18 08:52:16.861Z"(最后的 Z 表示 UTC)。

您应该能够在 UTC 中使用 DateTime 进行 OAuth 协商。如果没有,请分享更多细节;这可能是 Dart 或您的 OAuth 客户端中的错误。

【讨论】:

【参考方案2】:

听起来你的时区很重要,所以你不应该相信 javascript 系统时间只有 10 英尺。

如果我是你,我会使用 php 对它们进行地理定位并根据它们的位置应用时区。

你会想要查看Get PHP Timezone Name from Latitude and Longitude?

【讨论】:

问题被标记为 Dart,所以服务器端和客户端都是 Dart。 PHP 真的不会在这里发挥作用。 啊,我不确定飞镖是什么,我想我会给我的 2 美分。 (我只以 php 为例,如果 dart 可以访问,任何基于服务器的语言都可以工作) Dart lang 是谷歌的抽象,他们在其中开发 Adwords 平台。它编译为 javascript,因此没有办法避免使用 javascript。当您认为它是飞镖时,上面的答案要好得多。

以上是关于如何让客户实际时间和时区执行系统时间检查的主要内容,如果未能解决你的问题,请参考以下文章

DBeaver的时区问题

教你在Centos8中更改时区

java获取系统时间不正确, 比实际时间早8小时。如何解决?

使用 Shiny 时如何检索客户端的当前时间和时区?

javascript取得的时间与实际时间差8个小时,如何修正?

Mongo插入时间跟实际时间不一致