如何从Internet服务器(实际本地时间)比较客户端的系统时间和日期时间

时间:2017-07-31 17:36:44

标签: dart

我正在尝试使用实际时间(互联网时间)验证客户端计算机的系统时间。如果由于某种原因客户端的时间设置不正确或时间和时区与本地时间不匹配,我想通知他们将时间与当地时间同步以便使用该应用程序。如果我的问题不明确,那么这就是我试图模仿的东西,https://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/Incorrect-System-time-warning-when-starting-an-Autodesk-360-application.html

如何在飞镖中进行这种时间比较/验证?

2 个答案:

答案 0 :(得分:1)

主要问题是恕我直言,你需要什么准确性。

您只需查询NTC并报告是否存在差异。如果服务器与这样的时间服务器同步,则应该没有问题。

您还可以向服务器添加返回服务器时间的API。 然后从本地系统和服务器读取时间并检查差异

bool compareTime() {
  var serverTime = await getTimeFromServer(); // not yet existing method to fetch the date and time from the server 
  var clientTime = new DateTime.now().toUtc();
  var diff = serverTime.difference(clientTime).abs();
  if(diff > const Duration(seconds: 5)) {
    print('Time difference too big');
  } else {
    print('Time is fine');
  }
}

确保从服务器返回的时间也是UTC,否则您将苹果与梨进行比较。

答案 1 :(得分:0)

如果您正在运行服务器端,则可以转出ntpdate -d pool.ntp.org并读取输出,解析最后一行。如果时间偏移足够小,那么你很好。

对于浏览器应用,请参阅Getting the current GMT world time处的StackOverflow以获取一些选项。