2011-01-31 10 views
18

क्या मुझे HttpCookie.Expires और HttpCachePolicy.SetExpires में डेटटाइम.अब या डेटटाइम.यूटीसीएनओ का उपयोग करना चाहिए?क्या मुझे डेटटाइम का उपयोग करना चाहिए.अब या डेटटाइम। UtcNow HttpCookie.Expires और HttpCachePolicy.SetExpires में?

Cookies are sending 'GMT' समय, लेकिन मुझे नहीं पता कि अगर मैं DateTime.Now.AddDays(3) भेजता हूं तो मैं जीएमटी +5 में होगा। Expires HTTP header (sec 14.21) के साथ ही।

मुझे क्या उपयोग करना चाहिए?

उत्तर

16

इससे कोई फर्क नहीं पड़ता।

आंतरिक रूप से, पहली बात .SetExpires कुकी पर सेट करने से पहले, आपके आपूर्ति किए गए डेटाटाइम को यूटीसी में परिवर्तित कर देती है।

20110701T14:00:00-1:00 (British Summer Time) 
: सिर्फ इतना है कि एक यूटीसी के लिए "baselined" है और अन्य है यह नहीं है -

मन में भालू, जब तक आपके datetime उपभोक्ता दिनांक समय वर्ग को सही ढंग से उपयोग करता है, तो दो ही हैं

और

20110701T13:00:00+0:00 (UTC) 

ठीक उसी दिनांक, अर्थात् 13:00 यूटीसी प्रतिनिधित्व करते हैं।

जब तक उपभोक्ता इसे सही तरीके से संभालता है (जो ऐसा लगता है, परावर्तक में देखा गया है) तो इससे कोई फर्क नहीं पड़ता।

यदि आप इसे ले रहे थे और इसे एक समय स्ट्रिंग के रूप में पास कर रहे थे, तो निश्चित रूप से, इससे कोई फर्क पड़ सकता है, लेकिन इस मामले में नहीं।

आप निम्न कोड के साथ प्रभाव देख सकते हैं (मान लीजिए कि आप यूटीसी में नहीं हैं - यदि आप हैं - परीक्षण करने के लिए अपनी सेटिंग्स बदलें!)। एक बार जब आप इसे यूटीसी में परिवर्तित करने के लिए कहा जाता है, तो वे दोनों एक ही समय-समय पर आउटपुट करते हैं।

WriteDateTime(DateTime.Now); 
WriteDateTime(DateTime.UtcNow); 

public static void WriteDateTime(DateTime dateTime) 
{ 
    Console.WriteLine(dateTime.ToUniversalTime().ToLongTimeString()); 
} 
+0

सही। धन्यवाद! – vtortola

+2

इसके लिए DateTime.UtcNow का उपयोग करना सबसे अच्छा है क्योंकि यह डेटटाइम से तेज़ है.अब। –

+0

यह उत्तर गलत है। डेटटाइम किसी ऑफसेट को स्टोर नहीं करता है और इसलिए डेटटाइम.अब और डेटटाइम। यूटीसीएनओ बहुत अलग हैं। सवाल यह बताता है कि ब्राउज़र क्या अपेक्षा करता है और सही जवाब यह है कि वे 0 ऑफसेट (यूटीसी) के साथ एक मूल्य की अपेक्षा करते हैं। तो सही जवाब वास्तव में नीचे @ फिल कैरसन द्वारा पेश किया गया है। – Talon

1

आपको डेटटाइम.यूटीसीएनओ विधि का उपयोग करना चाहिए क्योंकि कुकीज़ के लिए समय मानक इस्तेमाल किया जाता है। यूटीसी जीएमटी के बराबर है।

MSDN: System.DateTime.UtcNow से

, दिनांक समय उद्देश्य यह है कि को यह कंप्यूटर पर वर्तमान दिनांक और समय सेट कर दिया जाता हो जाता है समन्वित यूनिवर्सल समय (UTC) के रूप में व्यक्त किया।

उनके बीच स्पष्टीकरण के लिए this का संदर्भ लें।

+0

मुझे पता है। समस्या यह है कि एमएसडीएन पेज में भी, वे डेटटाइम का उपयोग करते हैं.अब http://msdn.microsoft.com/en-us/library/system.web.httpcookie.expires.aspx और यह मुझे परेशान कर रहा है। मुझे नहीं पता कि क्या वे सिर्फ ओटीपीक्यूकी की देखभाल नहीं करते हैं। एक्सपीयर पहले ही जीएमटी में बदल जाते हैं: पी – vtortola

+0

-1 - मुझे विश्वास नहीं है कि यह सही है - इससे कोई फर्क नहीं पड़ता है जिसका आप उपयोग करते हैं। –

+0

रॉब, जैसा कि आपने विधि के कार्यान्वयन के कारण या तो तकनीकी रूप से उपयोग करने की ओर इशारा किया है, काम करेगा। अन्य विचार हैं: –

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