2009-09-12 7 views
7

क्या 1 जनवरी, 1 9 70 को ग्रीनविच मीन टाइम डेटटाइम में प्राप्त करने का कोई तरीका है?.NET ग्रीनविच मीन टाइम

अगर मैं सिर्फ नई तारीख (1970, 1, 1) मैं अपने वर्तमान समय क्षेत्र के साथ मिल जाएगा निर्दिष्ट ..

उत्तर

6

GMTUTC के बराबर है (समन्वय डी सार्वभौमिक समय), अधिक या कम (जब तक कि आप सेकंड के अंशों से निपट नहीं रहे हैं, कोई अंतर नहीं है)। DateTimeKind, एक गणना जो आपको चुनने देती है कि आपके स्थानीय समय क्षेत्र या यूटीसी में समय प्रदर्शित करना है या नहीं, डेटटाइम कन्स्ट्रक्टर में बनाया गया है। इसका उपयोग करके, हम जीएमटी के बराबर प्राप्त कर सकते हैं।

DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind kind) 

या (एक में वहाँ है एक millisecond तर्क, अन्य में वहाँ नहीं है):

निर्माता हम उपयोग करने के लिए देख रहे हैं निम्नलिखित है

DateTime(int year, int month, int day, int hour, int minute, int second, DateTimeKind kind) 

के लिए डेटटाइम प्राप्त करने के लिए 1 जनवरी 1 9 70 यूटीसी में, हम यही उपयोग कर सकते हैं:

DateTime inGMT = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); //using 1st constructor above 

या:

DateTime inGMT = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); //using 2nd constructor above 

नोट: गणन DateTimeKind की सामग्री नीचे हैं:

  • अनिर्दिष्ट
  • यूटीसी
  • (या तो स्थानीय समय या यूटीसी हो सकता है)
  • स्थानीय

अद्यतन: थॉमस लेवेस्क उसके जवाब में एक बहुत ही रचनात्मक समाधान का प्रस्ताव रखा, लेकिन मुझे यकीन है कि अगर यह सबसे सीधा तरीका है नहीं कर रहा हूँ और अगर यह एक व्यावहारिक तरीका है कि किसी भी समय क्षेत्र के लिए इस्तेमाल किया जा सकता है। मुझे लगता है कि वह कह रहा है कि आप डेटटाइम ऑफसेटडेटटाइम.अब और डेटटाइम की गणना कर सकते हैं।UtcNow, और 1 जनवरी, 1 9 70 को अपने समय क्षेत्र में गणना की गई ऑफसेट लागू करें, जो आपको इसे यूटीसी/जीएमटी समय में देता है। मुझे यकीन नहीं है कि ऑफसेट्स को अन्य समय क्षेत्रों पर गणना करने के लिए सरल तरीके हैं, और फिर यह प्रश्न के लिए थोड़ा अनावश्यक हो जाता है।

अद्यतन # 2: मैं एक और दिनांक समय निर्माता जो एक ही बात सिद्ध जोड़ा है, लेकिन मिलीसेकंड तर्क का अभाव है। वे विनिमयशील हैं।

+0

जीएमटी * डेलाइट बचत समय का पालन नहीं करता है। http://en.wikipedia.org/wiki/Greenwich_Mean_Time – LukeH

+0

हाँ क्षमा करें, यह एक गलती थी। फिक्स्ड। –

2

GMT है, सभी व्यावहारिक उद्देश्यों के लिए, यूटीसी के रूप में ही।

इसका मतलब यह है कि आप बस DateTime constructors कि एक DateTimeKind पैरामीटर लेता है, DateTimeKind.Utc करने के लिए इसे स्थापित करने से एक का उपयोग कर सकते हैं।

DateTime gmt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
+0

यूटीसी काफी जीएमटी नहीं है - जीएमटी डीएलटी (डेलाइट सेविंग्स) का पालन करता है, हालांकि यह काफी समय के बराबर है। – Noldorin

+2

यूटीसी और जीएमटी केवल एक सेकंड के अंशों से अलग है। जीएमटी में डेलाइट सेविंग टाइम नहीं है। – Erik

+3

@ नोल्डोरिन: जीएमटी और यूटीसी * सभी उद्देश्यों और उद्देश्यों के लिए समान हैं *। जीएमटी * डेलाइट बचत का पालन नहीं करता है: यूके में यह वर्तमान में बीएसटी है जो जीएमटी + 1 है। http://en.wikipedia.org/wiki/Greenwich_Mean_Time – LukeH

3

बाहर चेक DateTimeOffset संरचना

संपादित करें: वास्तव में, के बाद आगे के बारे में DateTimeOffset पढ़ने, यह तुम क्या करने की कोशिश कर रहे हैं क्या करने के लिए सबसे पर्याप्त समाधान नहीं हो सकता है ... मैं इस बारे में सोच अपने प्रश्न का सबसे सीधा जवाब है:

DateTime epoch = DateTime.SpecifyKind(new DateTime(1970, 1, 1), DateTimeKind.Utc); 
+0

डेटटाइम ऑफसेट का उपयोग करना एक बहुत ही रोचक समाधान होगा! क्या आप हमें जीएमटी समय खोजने के लिए इसका उपयोग करने का इरादा रखने के लिए कुछ नमूना कोड दे सकते हैं? क्या आप डेटटाइम.अब और डेटटाइम.यूटीसीएनओ के बीच ऑफसेट ढूंढने जा रहे हैं, और उसके बाद ऑफसेट को 1 जनवरी, 1 9 70 को अपने समय क्षेत्र में लागू करें? या क्या कोई और प्रत्यक्ष दृष्टिकोण है? बहुत ही रोचक! –

+0

इसके अलावा, क्या यह दृष्टिकोण (उपरोक्त टिप्पणी में बताए गए अनुसार आपके उत्तर की मेरी व्याख्या के अनुसार) प्रत्येक टाइमज़ोन के लिए काम करता है जिसे आप कनवर्ट करना चाहते हैं? दूसरे शब्दों में, क्या डेटटाइम के समान कुछ है। यूटीसीएनओ अन्य टाइमज़ोन के लिए उपलब्ध है? यदि नहीं, तो मुझे नहीं लगता कि यह एक व्यवहार्य सार्वभौमिक समाधान होगा। –

+0

@ थॉमस: मैं इस बात से सहमत नहीं हूं कि यह प्रश्न का "सबसे प्रत्यक्ष उत्तर" है: आप 'डेटटाइम' बना रहे हैं और फिर 'निर्दिष्टकिंड' विधि को कॉल कर रहे हैं। अतिरिक्त विधि कॉल की आवश्यकता के बिना, एक अलग कन्स्ट्रक्टर को कॉल करके एक ही परिणाम प्राप्त किया जा सकता है। (विवरण के लिए मेरा उत्तर देखें।) – LukeH

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