2012-09-28 19 views
6

मेरे एएसपी.NET एप्लिकेशन में मैं यूटीसी के रूप में एप्लिकेशन की बिल्ड तिथि खोजने के लिए कोड from here का उपयोग करता हूं।एक ही डेटटाइम मूल्य अलग-अलग उपयोगकर्ताओं के लिए अलग-अलग प्रदर्शित समय क्यों देगा?

//DateTime time  
return time.ToString("dd MMM yyyy HH:mm:ss"); 

अब एक उपयोगकर्ता पेज है कि आवेदन द्वारा कार्य को खोलता है और देखता है

28 сен 2012 04:13:56 

और अन्य उपयोगकर्ता जो एक ही पृष्ठ खोलता सूचित करता है: विधानसभा फ़ाइल से पढ़ने यूटीसी मूल्य तो इस प्रारूप में है और

27 Sep 2012 12:14:32 

दोनों अनुरोधों एक ही आवेदन बहुत ही पैकेज से विंडोज Azure VMs साफ करने के लिए तैनात द्वारा सेवा कर रहे हैं देखता है, तो यह निश्चित रूप से बिल्कुल वैसा ही कोड के लिए रन किया जा रहा है दोनों उपयोगकर्ता।

अलग-अलग उपयोगकर्ताओं के अनुरोधों के लिए अलग-अलग स्थानीयकरण की वजह से स्पष्ट रूप से तारों को अलग-अलग स्वरूपित किया गया है। एक उपयोगकर्ता को Sep के रूप में प्रदर्शित महीना दिखाई देता है और दूसरा इसे сен (रूसी में Sep के बराबर) के रूप में देखता है।

घंटे क्यों भिन्न होते हैं? क्या वे कुछ टाइमज़ोन के अनुसार भी समायोजित हैं जो स्थानीयकरण पर निर्भर करता है?

+0

ठीक है, हाँ वे हैं: दिन और घंटे अलग हैं: जाहिर है, जब यह 28 सितंबर को रूस में 4 बजे है, तो यह 27 वें स्थान पर है (निश्चित रूप से पृथ्वी के पश्चिमी हिस्से में) ... लेकिन क्या है अजीब बात यह है कि मिनट/सेकंड – Kek

उत्तर

3

सबसे स्पष्ट स्पष्टीकरण यह है कि DateTime मूल्य वास्तव में अलग हैं।

कोड आप लिंक किए गए GetCallingAssembly का उपयोग करता है, और आप ध्यान देना चाहिए कि MSDN says कि:

विधि है कि GetCallingAssembly प्रणाली को बुलाती है जस्ट-इन-समय (JIT) संकलक द्वारा इनलाइन विस्तार किया जाता है, या यदि अपने फोन करने वाले इनलाइन विस्तार किया जाता है, विधानसभा कि GetCallingAssembly द्वारा दिया जाता है अलग अप्रत्याशित रूप से

इस डिबग करने के लिए, मैं time.Ticks और time.Kind प्रदर्शित करके शुरू होगा हो सकता है: अगर इन समान हैं, आप जानते हैं कि यह एक प्रदर्शन समस्या है। यदि वे अलग हैं, तो आपको यह देखने की आवश्यकता है कि आप समय मूल्य कैसे बना रहे हैं।

+0

नहीं बदलना चाहिए हां, यही वह है। टाइमस्टैम्प को पढ़ने वाले फ़ंक्शन को कॉल करने वाला कोड .aspx के अंदर था जो वास्तविक तैनाती पर प्रीकंपल किया गया था। तो इस पर निर्भर करता है कि कॉल को रेखांकित किया गया है या तो यह एएसपी.नेट प्रीकंपिलेशन के निर्माण या समय का समय होगा। – sharptooth

+0

यहां एक विशिष्ट फ़ंक्शन की इनलाइनिंग को अक्षम करने का तरीका बताया गया है: http://stackoverflow.com/a/5169272/57428 – sharptooth