2011-10-08 7 views
16

फेसबुक, माइस्पेस, एमएसएन, craigslist; सभी टाइमज़ोन का पता लगाते हैं और कभी भी फॉर्म सबमिट करने या पृष्ठ को फिर से लोड किए बिना सही समय और तिथियां दिखाते हैं।टाइमज़ोन का पता लगाने वाली प्रमुख साइटें कैसे हैं?

वे इसे कैसे करते हैं? मेरे पास एक बहुत बड़ी साइट है और लोग ऐसे लेख प्रकाशित कर रहे हैं जिन्हें सही समय प्रदर्शित करने की आवश्यकता है (टाइमज़ोन के आधार पर 3 बजे या 6 बजे अपलोड किया गया)।

प्रीलोडर? जावास्क्रिप्ट? पृष्ठ लोड हो रहा है और इसे पुनः लोड कर रहा है? वर्तमान में मेरी साइट में व्यक्ति साइट दर्ज करता है और पहली प्रविष्टि पर यह जावास्क्रिप्ट के माध्यम से अपने टाइमज़ोन की अद्यतन जानकारी के साथ पृष्ठ को पुनः लोड करता है। हालांकि यह एक बहुत ही परेशान चीज है और मैं एक और विकल्प की तलाश में हूं। मुझे पता है कि लोड होने पर मैं एक AJAX अनुरोध भेज सकता हूं और फिर उपयोगकर्ता के लिए सही टाइमज़ोन के साथ साइट पर सबकुछ अपडेट कर सकता हूं लेकिन अगर मुझे वापस क्लिक करना है, या फिर से लोड करना है तो पूछता है कि क्या मैं फिर से जानकारी भेजना चाहता हूं जो भी बुरा है। तो, वो इसे कैसे करते हैं?

मैं फेसबुक के साथ खेल रहा था, मेरी स्थानीय मशीन पर अपना स्थान बदल रहा था और यह हर 5 मिनट या तो टाइमज़ोन को अपडेट करना प्रतीत होता था।

मैं php, zend-framework आधारित हूं।

+0

मेरा उत्तर देखें, यह थोड़ा और अधिक सटीक है। :) – pckabeer

उत्तर

16

कोई "समय क्षेत्र" अनुरोध हेडर, या ऐसा ही कुछ है, इसलिए, आप php

साथ नहीं कर सकते हैं लेकिन जावास्क्रिप्ट के साथ http://www.pageloom.com/automatic-timezone-detection-with-javascript

: समय क्षेत्र ग्राहक की भरपाई प्राप्त कर सकते हैं, तो आप जानकारियां भेजने के लिए एक xmlhttp अनुरोध pHP के लिए

यह देख कर सकता है

बहुत आसान!

आशा है कि यह

+1

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

+0

मैं @AdamSack के साथ अभी भी जावास्क्रिप्ट के लिए +1 से सहमत हूं;) –

+1

टाइमज़ोन ऑफसेट स्थिर नहीं है, यह डीएसटी के साथ बदलता है, इस प्रकार यह क्लाइंट का उपयोग करने वाले समय-समय पर अस्पष्ट हो सकता है। आईपी, जेएस टाइमज़ोन ऑफसेट और जेएस लोकेल का एक संयोजन बेहतर परिणाम देना चाहिए (आपको एक डेटाबेस की आवश्यकता है जो इन सभी को किसी भी तरह जोड़ती है)। –

4

आप उपयोगकर्ता देश using IP address geocoding ढूंढ सकते हैं और उसके बाद प्रत्येक देश के लिए समय क्षेत्र के साथ कुछ सरणी हो सकती है। मुझे लगता है कि कोई और तरीका नहीं है। आप इस तरह उपयोगकर्ता देश लाने के कर सकते हैं:

<?php 
$file = file_get_contents("http://api.hostip.info/get_html.php?ip=".$_SERVER['REMOTE_ADDR'].""); 
?> 

तो बस $file के लिए explode का उपयोग करें।

देखो भी इन Stackoverflow कोड:
How can I determine a web user's time zone?
Any Reliable API available to determine User's city and country from IP address

3

में मदद करता है मेरा मानना ​​है कि वे आईपी को संबोधित कर और भू-स्थान का उपयोग करें। यही सब है इसके लिए।

+0

नहीं, जेएस AJAX अनुरोध भी अच्छा विकल्प है –

2

सबसे पहले, आपको सभी स्तरों पर यूटीसी के साथ काम करना चाहिए और यदि आप समय क्षेत्र को इस तरह के समय के बारे में नहीं जानते हैं। तब स्थानीय क्लाइंट पर आप timezoneOffset

के साथ समय समायोजित कर सकते हैं

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset

1

इस php कोड इस बेहतर परिशुद्धता

<?php $ip = $_SERVER['REMOTE_ADDR']; 
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true"); 
    $json = json_decode($json,true); 
    $timezone = $json[localTimeZone];?> 
+0

क्यों एक डाउन वोट peeps? मैं दो दोष देखता हूं, आईपी का उपयोग गलत टाइमज़ोन दे सकता है अगर प्रदाता के सर्वर किसी अन्य टाइमज़ोन में हैं, और बाहरी साइट का उपयोग करना अच्छा नहीं है क्योंकि हम निर्भर नहीं होना चाहते हैं। हालांकि इनपुट के लिए धन्यवाद – Darius

+0

मैंने डाउनवोट नहीं किया लेकिन मुझे लगता है कि आपके द्वारा सूचीबद्ध दो कारणों का उपयोग करने के लिए काफी आकर्षक कारण हैं – sricks

1

jsTimezoneDetect जावास्क्रिप्ट के माध्यम से स्वचालित समय क्षेत्र का पता लगाने के लिए एक महान पुस्तकालय प्रदान करता है देता है की कोशिश करो।

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