university tutorial studio oficial curso c# xamarin win-universal-app

c# - studio - xamarin tutorial



El complemento de configuraciĆ³n no funciona correctamente con la propiedad DateTime (1)

Estoy usando el plugin de configuración y lo tengo trabajando para almacenar algunos booleanos. Ahora quería agregar administrar un objeto DateTime. Agregué lo siguiente a Settings.cs:

private const string TimeRemainingKey = "time_remaining"; private static readonly DateTime TimeRemainingDefault = DateTime.Now; public static DateTime TimeRemaining { get { return AppSettings.GetValueOrDefault(TimeRemainingKey, TimeRemainingDefault); } set { AppSettings.AddOrUpdateValue(TimeRemainingKey, value); } }

Originalmente usé lo siguiente en mi código:

Settings.TimeRemaining = new DateTime().AddMinutes(30);

Cuando agregué algo de registro, tuve esto:

DateTime dt = new DateTime(); Debug.WriteLine(dt.ToString()); dt = dt.AddMinutes(30); Debug.WriteLine(dt.ToString()); Settings.TimeRemaining = dt; Debug.WriteLine(Settings.TimeRemaining.ToString());

Imprime:

1/1/0001 12:00:00 a.m.

1/1/0001 12:30:00 a.m.

1/1/0001 12:00:00 a.m.

¿Por qué ocurre este comportamiento?


El complemento de configuración convierte el DateTime en UTC para que se vea como en su zona horaria cuando se convierte 1/1/0001 12:30:00 AM a UTC se obtiene 1/1/0001 12:00:00 AM. Como resultado, cuando se lee el valor desde la configuración, obtiene 1/1/0001 12:00:00 AM.

Si configura el Kind para su fecha, el complemento debería funcionar correctamente:

Settings.TimeRemaining = DateTime.SpecifyKind(new DateTime().AddMinutes(30), DateTimeKind.Utc);