2010-05-04 12 views
15

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

+0

इस सवाल पर एक नज़र डालें में गहरी dives पढ़ने पर विचार // stackoverflow.com/questions/85116/how-do-i-display-a-date-time-in-the-users-locale-format-and-time-offset –

उत्तर

17

यदि आप (और आपकी वेबसाइट) जावास्क्रिप्ट के साथ सहज हैं, तो इसे पूरा करने का एक बहुत ही आसान तरीका है।

सबसे पहले, सर्वर की तरफ, आपके पास आरएफसी 3339 प्रारूप में प्रारूपित यूटीसी दिनांक/समय होगा (अन्य प्रोटोकॉल, icalendar के बीच उपयोग किए जाने वाले इंटरनेट समय के लिए मानक)। आरएफसी 3339 के बुनियादी वाक्यविन्यास है:

YYYY-MM-DDTHH:MM:SS 

इस तरह की है कि मैं कहाँ हूँ, समय होगा:

2010-05-04T05:52:33 

लेकिन जब समय स्थानीय नहीं है, लेकिन यूटीसी, आप के लिए एक Z जोड़ने इसे इंगित करने के लिए अंत। तो मेरे मामले में, के बाद से मैं GMT से -0500 घंटे में हूँ, एक ही समय ऊपर होगा:

2010-05-04T10:52:33Z 

तो, पहले आप ऊपर उत्पादन करने के लिए सर्वर अपने वेब पृष्ठ के जावास्क्रिप्ट को मिलता है। जावास्क्रिप्ट उस टाइमस्टैम्प को पार्स कर सकता है और यह ब्राउज़र के समय क्षेत्र में समायोजित दिनांक और समय आउटपुट करेगा (जो ब्राउज़र को होस्ट करने वाले कंप्यूटर द्वारा निर्धारित किया जाता है)। आपको याद रखना चाहिए कि यदि कोई उपयोगकर्ता टोक्यो से है और स्पेन में आपकी वेबसाइट देख रहा है, तो वे टोक्यो के समय में टाइमस्टैम्प देखेंगे जब तक कि उन्होंने अपने कंप्यूटर की घड़ी को समायोजित नहीं किया हो।

तो जावास्क्रिप्ट होगा:

var time_string_utc = some_server_variable; // timestamp from server 
    var time_string_utc_epoch = Date.parse(time_string_utc); 
    var time_utc = new Date(); 
    time_utc.setTime(time_string_utc_epoch); 

इस बिंदु पर, आप एक जावास्क्रिप्ट तारीख वस्तु अपने यूटीसी टाइमस्टैम्प लिए निर्धारित किया है।ऊपर क्या होता है इसकी एक त्वरित व्याख्या:

पहला चर मानता है कि आपने सर्वर से उस चर के लिए टाइमस्टैम्प स्ट्रिंग पास कर दी है।

दूसरा चर स्ट्रिंग को एक युग टाइमस्टैंप में बदलने के लिए Date.parse() विधि का उपयोग करता है।

तीसरा चर सेट ऑफसेट ऑब्जेक्ट बनाता है।

अंतिम पंक्ति रेखा setTime विधि का उपयोग करती है, जो एक युग टाइमस्टैंप से दिनांक वस्तु सेट करती है।

अब आपके पास ऑब्जेक्ट है, तो आप इसे उपयुक्त रूप में उपयोगकर्ता को आउटपुट कर सकते हैं। एक सरल प्रयोग के रूप में, आप का उपयोग कर सकते हैं:

document.write(time_utc); 

जो, अगर तुम मेरे समय क्षेत्र यूटीसी टाइमस्टैम्प का उपयोग करने में कर रहे हैं मैं के साथ शुरुआत की:

2010-05-04T10:52:33Z 

देना होगा:

Tue May 04 2010 05:52:33 GMT-0500 (CST) 

लेकिन आप समय को प्रारूपित करने के लिए विभिन्न जावास्क्रिप्ट विधियों का उपयोग कर सकते हैं और अधिक सुखद दिख रहे हैं।

उपयोगकर्ता के देश का अनुमान लगाने या यहां तक ​​कि अपना टाइमस्टैम्प समायोजित करने की आवश्यकता नहीं है, जब तक कि आप उपयोगकर्ता के स्थानीय ब्राउज़र/कंप्यूटर समय क्षेत्र पर भरोसा न करें।

फिर, लघु संस्करण: http:

var time_string_utc = some_server_variable; // UTC time from server 
    var time_string_utc_epoch = Date.parse(some_server_variable); 
    var time_utc = new Date(); 
    time_utc.setTime(time_string_utc_epoch); 
    document.write(time_utc); 
+0

आपका कोड ऐसा लगता है कि मुझे वह चाहिए जो मुझे चाहिए। मेरी समस्या यह है कि मुझे जावास्क्रिप्ट के बारे में बहुत कुछ पता नहीं है। फिलहाल मैं अपने डेटाग्रिड को इस तरह के डेटाटाइम के साथ पॉप्युलेट कर रहा हूं: मैं आपके उपयोग कैसे कर सकता हूं इस के साथ लिपि? – Retrocoder

+0

यदि आप समय वाले अपने तत्वों के लिए सेट क्लासेस या आईडी का उपयोग करते हैं, तो आप जावास्क्रिप्ट को पृष्ठ लोड पर समय समायोजित कर सकते हैं। मुझे एएसपी के बारे में पर्याप्त जानकारी नहीं है कि आपका कोड एचटीएमएल कैसे बन जाएगा, लेकिन यदि आप मुझे टाइम स्टैंप के एचटीएमएल का नमूना दे सकते हैं, तो मैं आपको पेज लोड के बाद इसे एडजस्ट करने के लिए जावास्क्रिप्ट को कैसे जोड़ सकता हूं। – Anthony

+0

@ एंथनी आपके दो कोड स्निपेट में, 'time_string_utc' चर का उपयोग नहीं किया जाता है। इसका उपयोग करने या इसे हटाने के लिए स्पष्ट होगा। –

0

बेशक संभव है। आपको उस देश का पता लगाने के लिए country settings ढूंढने की आवश्यकता है, और उस देश के समय के लिए प्रदर्शित तिथि को संशोधित करें। आप उपयोगकर्ता देश का पता लगाने के लिए एक और तरीका भी ढूंढ सकते हैं। (शायद उसके आईपी पते से)।

मुझे यकीन है कि इसका प्रबंधन करने का सबसे अच्छा तरीका यह है कि आपके सहयोगी को पता है कि आपको अपनी परियोजना पर देश सेटिंग्स कार्यान्वयन के बारे में अधिक जानकारी चाहिए और आप इसका उपयोग कैसे कर सकते हैं।

0

संपादित करें:

इसके बारे में सोच रही थी मुझे नहीं लगता कि यह स्थानीय समय प्रदर्शित करने के लिए एक बार आप ग्राहक की संस्कृति है संभव है। मैं निश्चित रूप से आपके सहयोगियों के सुझाव देखने में रुचि रखूंगा।

अमेरिकी संस्कृति प्राप्त करना, उदाहरण के लिए, अमेरिका की कई टाइमज़ोन की सहायता नहीं होगी।

मैं का उपयोग कर एंथोनी की तरह जावास्क्रिप्ट पता चलता जाने का रास्ता हो सकता है लगता है ...

पुराने:

आपको लगता है कि वर्तमान सेट कोड के साथ InitializeCulture() विधि (चुना या ब्राउज़र रिपोर्टिंग) ओवरराइड कर सकते हैं संस्कृतियां:

Thread.CurrentThread.CurrentCulture = 
      CultureInfo.CreateSpecificCulture(selectedLanguage); 
Thread.CurrentThread.CurrentUICulture = new 
      CultureInfo(selectedLanguage); 
+0

तो एएसपी.NET विज़िटर के समय क्षेत्र को स्वचालित रूप से पहचान सकता है? कैसे? –

+0

मुझे नहीं लगता कि यह समय क्षेत्र स्वचालित रूप से प्राप्त कर सकता है। यदि आपको ब्राउजर, या उपयोगकर्ता से संस्कृति मिलती है - "देश की सेटिंग्स प्राप्त करना" - तो वह रास्ते का हिस्सा है। मुझे लगता है कि उसका सहकर्मी क्या था। –

+0

यह कहकर कि, अमेरिकी संस्कृति प्राप्त करना, उदाहरण के लिए, अमेरिका की कई टाइमज़ोन की मदद नहीं करेगा। शायद मेरा जवाब एएसपी.नेट के लिए भी डूब गया है। यह एक दिलचस्प है ... –

1

इसके अलावा this thread जो डॉस और समय क्षेत्र भर में दिन के उजाले से निपटने समस्या को बचाने के donts

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