在WPF / XAML中显示本地时区的时间

我的应用程序在几个不同的设备上同步数据。 因此,它将所有日期存储在UTC时区中,以考虑可能设置为不同时区的不同设备。

麻烦的是,当我读回日期并显示它们时,它们似乎是不正确的(大多数用户都在英国夏令时,所以他们落后一小时)。

    

我是否需要手动覆盖UI线程的set CurrentCulture属性? 我知道我必须在Silverlight中这样做。

在解析存储的DateTime并将其转换为DateTime.ToLocalTime()时,您是否将“Utc”指定为DateTime.Kind ?

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

^^对我来说很好

更新:

 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:

    ...