2016-05-02 27 views
23

settings plugin kullanıyorum ve bazı booleanları depolamaya çalışıyorum. Şimdi bir DateTime nesnesini yönetmek istedim.Ayarlar eklentisi DateTime özelliği ile düzgün çalışmıyor

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

Bu baskılar: Ben bu vardı bazı günlük eklendiğinde

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

:

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

Başlangıçta benim kodunda aşağıdaki kullandı: Ben Settings.cs için aşağıdaki eklendi dışarı:

1/1/0001 12:00:00 AM

1/1/0001 12:00:00 AM

Neden bu davranış meydana

1/1/0001 00:30:00

?

+0

bir DateTime nesnesi oluşturduk ancak bir değerle başlatıldı değil. Bu yüzden minimum DateTime değerini alır. – Mainak

+4

@Mainak buradaki sorun değil. Bir Ayarı günceller ve tekrar okunduğunda güncellemeler gider. Kısa versiyon 'Setting = dt' fakat daha sonra' dt! = Setting'. –

+0

Yaptığınız zaman ne olur? 'Ayarlar.TimeRemaining = Ayarlar.TimeRemaining.AddMinutes (30); System.Diagnostics.Debug.WriteLine (Settings.TimeRemaining.ToString()); ' O zaman çalışıyor mu, yoksa aynı hata mı oluyor? – Draken

cevap

14

Ayarlar eklentisi converts the DateTime to UTC, bu yüzden saat diliminizde 1/1/0001 12:30:00 UTC'ye dönüştürdüğü zamanki gibi görünüyor 1/1/0001 12:00:00 AM. Sonuç, değerlerden geri okunduğunda 1/1/0001 12:00:00 AM alırsınız. Eğer tarih Kind ayarlarsanız

eklenti düzgün çalışması gerekir:

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

'DateTimeKind.Utc' kullanıldığında beklendiği gibi çalıştı. Teşekkür ederim! – Nfear

İlgili konular