设置插件与DateTime属性无法正常工作

ste*_*ana 24 c# xamarin win-universal-app

我正在使用设置插件,我正在努力存储一些布尔值.现在我想添加管理DateTime对象.我在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

最初我在我的代码中使用了以下内容:

Settings.TimeRemaining = new DateTime().AddMinutes(30);
Run Code Online (Sandbox Code Playgroud)

当我添加一些日志记录时,我有这个:

DateTime dt = new DateTime();
Debug.WriteLine(dt.ToString());
dt = dt.AddMinutes(30);
Debug.WriteLine(dt.ToString());
Settings.TimeRemaining = dt;
Debug.WriteLine(Settings.TimeRemaining.ToString());
Run Code Online (Sandbox Code Playgroud)

打印出来:

1/1/0001 12:00:00 AM

1/1/0001 12:30:00 AM

1/1/0001 12:00:00 AM

为什么会出现这种情况?

Gio*_*rgi 17

设置插件将DateTime转换为UTC,因此当它将1/1/0001 12:30:00 AM转换为UTC时,它会在您的时区中看起来像是1/1/0001 12:00:00 AM.因此,当从设置中读回值时,您将获得1/1/0001 12:00:00 AM.

如果您Kind为日期设置插件应该正常工作:

Settings.TimeRemaining = DateTime.SpecifyKind(new DateTime().AddMinutes(30), DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)