2013-06-04 28 views
11

olarak görüntüleme Uygulamam, verileri farklı cihazlar arasında senkronize eder. Bu nedenle, farklı zaman dilimlerine ayarlanmış farklı cihazları hesaba katmak için UTC zaman dilimi içindeki tüm tarihleri ​​saklar.Yerel saat dilimindeki saati WPF/XAML

Sorun şu ki, tarihleri ​​geri okurken ve görüntülediğimde hatalı görünüyorlar (çoğu kullanıcı İngiliz Yaz Saati'nde olduğundan bir saat geride kalıyorlar).

UI iş parçacığının ayarlanmış CurrentCulture özelliğini el ile geçersiz kılmam gerekiyor mu? Bunu Silverlight'ta yapmam gerektiğini biliyorum.

cevap

12

Depolanan DateTime ayrıştırılırken DateTime.Kind olarak "Utc" belirtiliyor ve DateTime.ToLocalTime() sürümüne dönüştürülüyor mu? Benim için gayet iyi çalışıyor ^^

public DateTime Submitted { 
    get { 
    DateTime utcTime = DateTime.SpecifyKind(DateTime.Parse(/*"Your Stored val from DB"*/), DateTimeKind.Utc); 

    return utcTime.ToLocalTime(); 
    } 

    set { 
    ... 
    } 
} 

Güncelleme:

class UtcToLocalDateTimeConverter : IValueConverter 
    { 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { 
     return DateTime.SpecifyKind(DateTime.Parse(value.ToString()), DateTimeKind.Utc).ToLocalTime(); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { 
     throw new NotImplementedException(); 
    } 
    } 

xaml: veritabanından DateTime yüklerken ben bir şey yapmıyorum

<Window.Resources> 
    <local:UtcToLocalDateTimeConverter x:Key="UtcToLocalDateTimeConverter" /> 
</Window.Resources> 
... 
<TextBlock Text="{Binding Submitted, Converter={StaticResource UtcToLocalDateTimeConverter}}" /> 
+0

, Gelen EntityFramework ModelFirst varlıklarını kullanıyorum. Belki bu özelliği geçersiz kılmam gerek. – BenCr

+0

@BenCr de aynısını bende bir dönüştürücüde mülk sahibindeydim. Cevabımı bir saniyede düzenleyeceğim – Viv

+1

Gerek yok, bir dönüştürücü çalabilirim, sadece bir tarihle her ciltlemenin eklenmesine izin vermek istemedim. XAML motorundaki bir şeyin mevcut UI kültür ayarlarına göre tarihleri ​​biçimlendireceğini umuyordum. – BenCr

İlgili konular