2008-11-26 15 views
8

मुझे समय
के साथ समस्या है मेरा सर्वर संयुक्त राज्य अमेरिका में है और मैं डेनमार्क (यूरोपा) में हूं और मैं अपनी साइट को अपने स्थानीय समय में समय दिखाना चाहता हूं। मैं उसे कैसे कर सकता हूँ?सर्वर समय को स्थानीय समय में कनवर्ट करने के लिए कैसे करें

मैं इस

Datetime localtime = DateTimeOffset.Now.ToOffset(new TimeSpan(1,0,0)).DateTime; 

कोशिश करते हैं और यह काम करता है, लेकिन यह केवल काम करेंगे जब मैं जीएमटी में हूँ + 1/यूटीसी +1 और नहीं जब मैं GMT + 2/UTC + 2 में हूँ। क्या ऐसा करने का कोई और तरीका है - इसे करने का एक आसान तरीका?

उत्तर

11

एक ही तरीका है कि आप क्या करना चाहिए यह इस प्रकार है।

TimeZoneInfo.ConvertTimeToUtc(dtLocal,tzi) स्थानीय समय से एक यूटीसी समय में उलटा कनवर्ट करना है।


समय-क्षेत्र आइडी तार के लिए, आप यहाँ कोड का सा चला सकते हैं ...

foreach(var tz in TimeZoneInfo.GetSystemTimeZones()) 
{ 
    Console.WriteLine(tz.DisplayName + " is Id=','" + tz.Id + "'"); 
} 
+1

यह ध्यान दिया जाना चाहिए कि TimeZoneInfo भविष्य में और पिछले समय के लिए भी डीएसटी मतभेदों को सही ढंग से लेता है। BaseUtcOffset या GetUtcOffset() का उपयोग करके रूपांतरणों को स्वयं करने का लुत्फ उठाएं। आप TimeZoneInfo का उपयोग करके अमान्य और अस्पष्ट समय की जांच भी कर सकते हैं। –

+0

यदि टाइमज़ोन ज्ञात नहीं है? विभिन्न देशों में सभी के लिए हम इसे कैसे कर सकते हैं? –

+0

@JoonBey लोगों को अपने देश का चयन करने की अनुमति देता है, या ऐसी सेवा का उपयोग करता है जो देश को उनके आईपी पते से निर्धारित करता है। जैसे http://stackoverflow.com/q/13921563/14033 –

0

आप सर्वर से समय निकाल सकते हैं और ऐसा कर सकते हैं।

DateTime myTimeGMT = ServerTime.ToUniversalTime(); 

यह ऐसा करते हैं:

DateTime myTimeLocal = myTimeGMT.ToLocalTime(); 

यहाँ केवल प्रतिबंध कंप्यूटर आप समय क्षेत्र के लिए परिवर्तित कर रहे हैं करने के लिए सेट किया जाना चाहिए पर हो रहा है।

मेरे अनुभव में, .NET को टाइमज़ोन के बीच परिवर्तित करने में परेशानी होती है जब न तो 'से' समय या 'टू' समय स्थानीय समय क्षेत्र होता है।

मुझे उम्मीद है कि इससे मदद मिलती है।

string zoneId = "Central European Standard Time"; 
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(zoneId); 
DateTime result = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow,tzi); 
Console.WriteLine("Time is " + result + " in Denmark"); 

नेट में केवल विश्वसनीय तरीका है TimeZoneInfo वर्ग का उपयोग करते हुए विभिन्न समय क्षेत्रों से/बदलने और उचित डीएसटी रूपांतरण दिलाने के लिए:

+0

डेटटाइम myTimeLocal = myTimeGMT.ToLocalTime(); जो इसे वापस servertime – Nesizer

+2

में परिवर्तित करेगा आपको रूपांतरण करने के लिए TimeZoneInfo क्लास को देखने की आवश्यकता है। आपके द्वारा दिखाया गया रूपांतरण डीएसटी मुद्दों से अनजान है। –

0

मैं रूपांतरण किया एक gridview एक टेम्पलेट का उपयोग कर क्षेत्र में प्रदर्शित करने के लिए।

<asp:TemplateField HeaderText="Last Activity"> 
       <ItemTemplate> 
        <asp:Label ID="LastActivityLBL" runat="server" Text='<%# Convert.ToDateTime(Eval("LastActivityDate")).ToLocalTime() %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Last Login"> 
       <ItemTemplate> 
        <asp:Label ID="LastLoginLBL" runat="server" Text='<%# Convert.ToDateTime(Eval("LastLoginDate")).ToLocalTime() %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
0
Datetime localtime = DateTimeOffset.Now.ToOffset(new TimeSpan(1,0,0)).DateTime; 

आप समय क्षेत्र के अनुसार like--

Datetime localtime = DateTimeOffset.Now.ToOffset(new TimeSpan(3,0,0)).DateTime; 

अपने TimeSpan बदल सकते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे