Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有可能在Xamarin.Forms中获得准确的日期和时间(而不是设备时间)?_C#_Android_Ios_Xamarin.forms - Fatal编程技术网

C# 是否有可能在Xamarin.Forms中获得准确的日期和时间(而不是设备时间)?

C# 是否有可能在Xamarin.Forms中获得准确的日期和时间(而不是设备时间)?,c#,android,ios,xamarin.forms,C#,Android,Ios,Xamarin.forms,我的应用程序有问题。我想得到准确的日期和时间,即使用户更改了设备的日期和时间。如果设备未连接到internet,这是否可能实现?顺便说一下,这是我试过的代码 Device.StartTimer(TimeSpan.FromSeconds(1), () => { TimeZoneInfo currentTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Asia/Singapore"); DisplayTime

我的应用程序有问题。我想得到准确的日期和时间,即使用户更改了设备的日期和时间。如果设备未连接到internet,这是否可能实现?顺便说一下,这是我试过的代码

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

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

这是很难做到的。您需要回退到GPS日期时间或承运人日期时间。一点挖掘就会导致这种情况


其他建议是将时间存储在本地,并监控设备和其他解决方法的时间变化,但任何操作都不会出现问题(尤其是在精度方面)。

如果无法从可信的外部网络源获取时间,则您将陷入困境。请参阅
            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);
        }