पर उपयोगकर्ता द्वारा दर्ज डेटाटाइम कनवर्ट करें उपयोगकर्ता उपयोगकर्ता को अलग-अलग टेक्स्टबॉक्स में दिनांक और एक समय में प्रवेश करता है। मैं फिर दिनांक और समय को एक डेटाटाइम में जोड़ता हूं। मुझे डेटाबेस में इसे सहेजने के लिए इस डेटाटाइम को यूटीसी में परिवर्तित करने की आवश्यकता है। मेरे पास डेटाबेस में उपयोगकर्ता का समय क्षेत्र आईडी सहेजा गया है (वे पंजीकरण करते समय इसे चुनते हैं)। सबसे पहले, मैं निम्नलिखित की कोशिश की:यूटीसी
string userTimeZoneID = "sometimezone"; // Retrieved from database
TimeZoneInfo userTimeZone = TimeZoneInfo.FindSystemTimeZoneById(userTimeZoneID);
DateTime dateOnly = someDate;
DateTime timeOnly = someTime;
DateTime combinedDateTime = dateOnly.Add(timeOnly.TimeOfDay);
DateTime convertedTime = TimeZoneInfo.ConvertTimeToUtc(combinedDateTime, userTimeZone);
यह एक अपवाद के परिणामस्वरूप:
The conversion could not be completed because the supplied DateTime did not have the Kind property set correctly. For example, when the Kind property is DateTimeKind.Local, the source time zone must be TimeZoneInfo.Local
मैं तो स्थापित कर इतना तरह तरह की संपत्ति की कोशिश की:
DateTime.SpecifyKind(combinedDateTime, DateTimeKind.Local);
यह नहीं था काम, इसलिए मैंने कोशिश की:
DateTime.SpecifyKind(combinedDateTime, DateTimeKind.Unspecified);
यह या तो काम नहीं किया। क्या कोई मुझे समझा सकता है कि मुझे क्या करना है? क्या मैं इसके बारे में भी सही तरीके से जा रहा हूं? क्या मुझे डेटटाइम ऑफसेट का उपयोग करना चाहिए?
संभव डुप्लिकेट http://stackoverflow.com/questions/4668921/convert-local-time कोशिश कर सकते हैं -to-utc-in-net-framework-3-0) – Shai
@Shai: स्पष्ट रूप से डुप्लिकेट नहीं है, क्योंकि उस प्रश्न में है: "मुझे .NET Framework 3.0 में उपयोग करना चाहिए, इसलिए TimeZoneInfo ऑब्जेक्ट का उपयोग नहीं कर सकता।" –
@ जोन्स स्केट अहह ने यह नहीं देखा, हालांकि ओपी को एक लीड दे सकता है .. – Shai