C# 是否有可能在Xamarin.Forms中获得准确的日期和时间(而不是设备时间)?
我的应用程序有问题。我想得到准确的日期和时间,即使用户更改了设备的日期和时间。如果设备未连接到internet,这是否可能实现?顺便说一下,这是我试过的代码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
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);
}