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