2013-06-04 7 views
11

में स्थानीय समय क्षेत्र में समय प्रदर्शित करना मेरा एप्लिकेशन कई अलग-अलग उपकरणों में डेटा सिंक्रनाइज़ करता है। इस कारण से यह यूटीसी समय-क्षेत्र में सभी तिथियों को विभिन्न उपकरणों के लिए संभवतः अलग-अलग समय क्षेत्रों पर सेट करने के लिए संग्रहीत करता है।डब्ल्यूपीएफ/एक्सएएमएल

समस्या यह है कि जब मैं तिथियों को वापस पढ़ता हूं और उन्हें प्रदर्शित करता हूं तो वे गलत होते हैं (अधिकांश उपयोगकर्ता ब्रिटिश समर समय पर हैं इसलिए वे एक घंटा पीछे हैं)।

<TextBlock Margin="5" Style="{StaticResource SmallTextblockStyle}"> 
    <Run Text="Last Updated:" /> 
    <Run Text="{Binding Path=Submitted}" /> 
</TextBlock> 

क्या मुझे यूआई थ्रेड की वर्तमान कॉरपोरेट संपत्ति सेट मैन्युअल रूप से ओवरराइड करने की आवश्यकता है? मुझे पता है मुझे सिल्वरलाइट में ऐसा करना है।

उत्तर

12

क्या आप DateTime.Kind के रूप में "Utc" निर्दिष्ट करते हैं, संग्रहीत DateTime को पार्स करते समय और इसे DateTime.ToLocalTime() में परिवर्तित करते हैं?

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:

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

मैं कुछ भी जब डेटाबेस से दिनांक समय लोड नहीं कर रहा हूँ, मैं सिर्फ एंटिटीफ्रेमवर्क मॉडल फर्स्ट इकाइयों का उपयोग कर रहा हूं जैसे वे आते हैं। शायद मुझे उस संपत्ति को ओवरराइड करने की जरूरत है। – BenCr

+0

@BenCr अच्छी तरह से आप वही कर सकते थे जो मेरे पास एक कनवर्टर में संपत्ति गेटटर में था। मैं अपने उत्तर को एक सेक – Viv

+1

में संपादित करूंगा, कोई ज़रूरत नहीं है, मैं कनवर्टर को खटखटा सकता हूं, मैं बस उस तारीख के साथ प्रत्येक बाइंडिंग में जोड़ने के उस पथ को नीचे नहीं जाना चाहता था। मैं उम्मीद कर रहा था कि एक्सएएमएल इंजन में कुछ मौजूदा यूआई संस्कृति सेटिंग्स के अनुसार तिथियों को प्रारूपित करेगा। – BenCr