2013-01-10 59 views
6

सी # वर्तमान तिथि DateTime.Now द्वारा प्राप्त करने का एक तरीका प्रदान करता है। लेकिन समस्या यह है कि मेरा सर्वर यूएस पर है और मुझे यूएसई समय मिलता है जब मैं DateTime.Nowसी # और विभिन्न देशों के लिए वर्तमान स्थानीय समय

क्या सी # में किसी विशिष्ट देश के लिए वर्तमान स्थानीय समय प्राप्त करने का कोई तरीका है क्योंकि मेरे उपयोगकर्ता दुनिया भर से हैं? (मेरे पास प्रत्येक उपयोगकर्ता का लोकेल है, इसलिए यदि मैं प्रत्येक लोकेल के लिए वर्तमान समय प्राप्त कर सकता हूं तो मैं सुरक्षित हूं)

मैंने using Time Zone पर एक रास्ता देखा है लेकिन फिर मुझे समय क्षेत्र बनाम देश संदर्भ रखना होगा।

मैंने खोज की है और यहां अधिकांश प्रश्न यूटीसी समय को स्थानीय समय में बदलने के बारे में है और इसके विपरीत। उम्मीद है कि कोई मुझे प्रबुद्ध करने में सक्षम होगा।

+1

मैं न में से एक ने एक खुला स्रोत समय क्षेत्र कार्यान्वयन पा सकते हैं एक समाधान की पेशकश, लेकिन ब्लॉग [क्या साथ datetime वैसे भी गलत] (http पढ़ें: // दिनांक समय/दिनांक समय से संबंधित समस्याओं के लिए noda-time.blogspot.in/2011/08/what-wrong-with-datetime-anyway.html)। । – Tilak

+0

[देश और क्षेत्र द्वारा टाइमज़ोन प्राप्त करें] (http://stackoverflow.com/q/7977736) –

+1

ध्यान दें कि कुछ देश कई समय क्षेत्रों में फैले हैं। तो केवल देश को जानना पर्याप्त नहीं हो सकता है। सीधे अपने कंप्यूटर से उपयोगकर्ता टाइमज़ोन को बेहतर ढंग से जानना बेहतर है। – Guillaume

उत्तर

4

यूटीसी समय (DateTime.UtcNow) का उपयोग करके अपने सर्वर में अपना समय बचाएं और फिर उपयोगकर्ता समय क्षेत्र के आधार पर आप इस यूटीसी समय को बदल देंगे। स्थानीय समय को डीबी

+0

क्या आपने पढ़ा है [वैसे भी डेटाटाइम के साथ गलत है] (http://noda-time.blogspot.in/2011/08/what-wrong-with-datetime-anyway.html)। डेटटाइम + स्थानीय टाइमज़ोन + डे लाइट सेविंग हल करने के लिए उतना आसान नहीं है जितना – Tilak

+0

दिखाई देता है http://stackoverflow.com/questions/8614323/convert-server-utc-time-to-client-local-time –

+0

है यह DateTime.Now.ToUniversalTime() के समान है? –

2

में कभी भी सहेजें, बस TimeZoneInfo कक्षा को देखें। डीएसटी (डेलाइट सेविंग टाइम) को बनाए रखने के दौरान आपको वहां से स्थानीय से सर्वर समय में कनवर्ट करने में सक्षम होना चाहिए।

DateTimeOffset newTime = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("AppTimeZone")); 

तुम भी महान जॉन स्कीट Noda Time