【问题标题】:Is it possible to get the exact correct date and time (not device time) in Xamarin.Forms?是否可以在 Xamarin.Forms 中获得准确正确的日期和时间(不是设备时间)?
【发布时间】:2021-05-02 07:48:10
【问题描述】:

我的应用出现问题。即使用户更改了设备日期和时间,我也想获得准确的日期和时间。如果设备未连接到互联网,这可以实现吗?顺便说一下,这是我尝试过的代码。

Device.StartTimer(TimeSpan.FromSeconds(1), () =>
{
    TimeZoneInfo currentTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Asia/Singapore");

    DisplayTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, currentTimeZone);
    return true;
});

【问题讨论】:

标签: c# android ios xamarin.forms


【解决方案1】:

这很难实现。您需要回退到 GPS 日期时间或运营商日期时间。一点点挖掘导致这个xamarin discussion

            protected override void OnResume()
            {
                base.OnResume();
                locationManager = GetSystemService (Context.LocationService) as LocationManager;
                locationManager.RequestLocationUpdates (LocationManager.GpsProvider, 1000, 1, this);

            }

        public void OnLocationChanged (Android.Locations.Location location)
        {
            Log.Debug (tag, "Location changed");
            DateTime dt = FromUnixTime(location.Time);
            txtStatusGPS.Text = dt.ToString ();
        }

        public DateTime FromUnixTime(long unixTime)
        {
             var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
             return epoch.AddSeconds(unixTime);
        }

其他建议是在本地存储时间并监控设备和其他解决方法的时间变化,但没有任何方法可以正常工作(尤其是在精度方面)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2016-04-08
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2011-12-27
    相关资源
    最近更新 更多