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



我在我的应用程序中有一个问题。我想获得确切的正确日期和时间,即使用户更改了设备日期和时间。如果设备没有连接到互联网,这可能实现吗?顺便说一下,这是我试过的代码。

Device.StartTimer(TimeSpan.FromSeconds(1), () =>
{
TimeZoneInfo currentTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Asia/Singapore");
DisplayTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, currentTimeZone);
return true;
});

这是很难做到的。您需要退回到GPS日期时间或运营商日期时间。对这个xamarin的讨论进行了一些挖掘

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);
}

其他建议是将时间存储在本地并监控设备的时间变化和其他解决方案,但没有任何工作是没有问题的(特别是在精度方面)。

最新更新