【问题标题】:How to check the date and time is correct in offline Application Xamarin.Forms for both Android and iOS如何在 Android 和 iOS 的离线应用程序 Xamarin.Forms 中检查日期和时间是否正确
【发布时间】:2021-09-15 15:50:09
【问题描述】:

如果用户禁用 Android 中的设置 - 日期和时间 -> 使用网络提供商时间,则用户可以更改日期和时间。 在 iOS 中也一样。如何检查它是否被更改。

我从DateTime.Now()得到日期需要验证。

【问题讨论】:

  • 如果您处于离线状态,那么您将无能为力
  • 谢谢@Jason,所以我们可以通过任何其他方式在应用程序连接到互联网时获取日期时间并获取日期时间,然后只需使用存储值经过的时间验证新值互联网。
  • 是的,连接到服务器并请求当前时间。您可以为此创建自己的服务,或者有许多现有的服务可以做到这一点
  • 是的,我知道上面声明的第一部分,但我正在寻找第二部分,即通过与 Internet 存储的日期时间进行比较来检查日期时间是否正确,只要网络是可用。

标签: xamarin.forms


【解决方案1】:

这是一个让GMT 时间在线的简单解决方法, 您可以创建 Webrequest 并在 response.Headers[Date] 中获取 GMT 时间,然后根据您的位置将其转换为本地时间。

后面的代码:

public string GetWebTime()
{
    WebRequest request = null;
    WebResponse response = null;
    WebHeaderCollection headerCollection = null;
    string datetime = string.Empty;
    try
    {
        request = WebRequest.Create("https://www.bing.com");
        request.Timeout = 3000;
        request.Credentials = CredentialCache.DefaultCredentials;
        response = (WebResponse)request.GetResponse();
        headerCollection = response.Headers;
        foreach (var h in headerCollection.AllKeys)
        {if (h == "Date")
            { datetime = headerCollection[h]; }
        }

        return datetime;

    }

    catch (Exception)
    {
        return datetime;


    }
    finally {
        if (request != null)
        { request.Abort(); }
        if (response != null)
        { response.Close(); }
        if (headerCollection != null)
        {headerCollection.Clear(); }

    }
          

}
private void onButton_Clicked(object sender, EventArgs e)
{
    myLabel.Text = GetWebTime();  
}

结果:

【讨论】:

  • 感谢您的回答,我已经对 NTP 服务器进行了同样的调整,只要网络连接就可以获取它(对于用户而言,在整个使用过程中很难在线)。但我关心的是如何检查特定过渡时的给定时间是否正确。我想到了将给定时间与从 NTP 服务器/Web 请求到 ElapsedTime 的存储时间进行比较的解决方法。
猜你喜欢
  • 2017-12-05
  • 2021-05-02
  • 2012-05-27
  • 2011-12-27
  • 2016-01-31
  • 2017-09-13
  • 2014-05-29
  • 2012-04-04
  • 1970-01-01
相关资源
最近更新 更多