2011-11-11 13 views

उत्तर

0
नाम के साथ अपने समय क्षेत्र के प्राप्त करना चाहते हैं

आप timezone offset प्राप्त कर सकते हैं। अनुमानित टाइमज़ोन की गणना करने के लिए आप किसका उपयोग कर सकते हैं। आप टाइमज़ोन ऑफ़सेट और names की एक सहयोगी सूची रख सकते हैं। हालांकि यह विधि किसी भी सटीक मान नहीं देती है, हालांकि।

+0

आप समय क्षेत्र ऑफ़सेट से समय क्षेत्र का काम नहीं कर सकते हैं। आप * संभव * समय क्षेत्र की एक सूची तैयार कर सकते हैं, लेकिन एक से अधिक हो सकते हैं। और आप कहते हैं कि यह "आवश्यक नहीं है" लेकिन यह पूरी तरह से निर्भर करता है कि ओपी को क्या करना है। उदाहरण के लिए, स्थानीय समय 10 मिनट में क्या होगा, यह जानने के लिए, समय क्षेत्र ऑफ़सेट पर्याप्त नहीं है। –

+0

@ जोन्स स्केट धन्यवाद! आप बिल्कुल सही हैं, आप ऑफसेट से केवल अनुमानित टाइमज़ोन प्राप्त कर सकते हैं। जवाब संपादित करना – abhinav

0
<? 
echo date("e"); 
?> 

यह आउटपुट दे देंगे:

एशिया/कोलकाता

+0

मुझे ब्राउज़र टाइमज़ोन की आवश्यकता है, सर्वर नहीं – user967144

3

आपका प्रश्न जावास्क्रिप्ट बजाय पीएचपी के बारे में वास्तव में है - क्योंकि यह ग्राहक क्षमताओं पर निर्भर करता है।

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

आप निश्चित रूप से समय क्षेत्र की जरूरत है, तो आप संभव समय क्षेत्रों की एक सूची काम करते हैं, और प्रस्तुत करते है कि उपयोगकर्ता के लिए करना चाह सकते हैं - भी उन्हें संकुचन निर्णय ओवरराइड करने के लिए अनुमति देता है, किसी भी समय क्षेत्र चुनने।

फिर, यह वास्तव में उस पर निर्भर करता है जिसे आप प्राप्त करने की कोशिश कर रहे हैं।

+0

php सरणी में संग्रहीत करने के लिए मुझे टाइमज़ोन की सूची कहां मिल सकती है? आइए कहें कि ऑफ़सेट "नई तिथि() है। getTimezoneOffset()/60" ..इस मान मेरी सरणी में उपलब्ध है? – user967144

+1

@ user967144: किस सरणी में? यह वास्तव में स्पष्ट नहीं है कि आप क्या पूछ रहे हैं। संभावित समय क्षेत्र निर्धारित करने के लिए, आपको * सभी * समय क्षेत्रों पर फिर से शुरू करना चाहिए और उसी ऑफसेट वाले लोगों को ढूंढना चाहिए। आप ['DateTimeZone :: listIdentifiers'] (http://www.php.net/manual/en/datetimezone.listidentifiers.php) का उपयोग कर हर समय क्षेत्र ढूंढ सकते हैं। –

+0

मुझे यहां एक लिंक मिला है क्या आप ब्राइटनेल द्वारा पोस्ट किए गए फ़ंक्शन पर एक नज़र डाल सकते हैं? codingforums.com/showthread.php?t=139888 – user967144

3

आपको ऐसा करने के लिए jQuery की आवश्यकता नहीं है। निम्नलिखित कोड का प्रयास करें:

var offset = (new Date()).getTimezoneOffset(); 
alert(offset); 

यह वर्तमान समय क्षेत्र ब्राउज़र (मिनट में) से ऑफसेट सूचित करेंगे।

this jsfiddle as a proof देखें।

मुझे लगता है कि आपको इसे अपने समय पर नाम बदलना होगा। यदि आप नामों को सुसंगत बनाना चाहते हैं, तो आपको उपयोगकर्ता के ब्राउज़र पर निर्भर नहीं होना चाहिए। हालांकि मैं इस पर बहुत ज्यादा भरोसा नहीं होता

var offset = (new Date()).getTimezoneOffset(); 

var timezones = { 
    '-12': 'Pacific/Kwajalein', 
    '-11': 'Pacific/Samoa', 
    '-10': 'Pacific/Honolulu', 
    '-9': 'America/Juneau', 
    '-8': 'America/Los_Angeles', 
    '-7': 'America/Denver', 
    '-6': 'America/Mexico_City', 
    '-5': 'America/New_York', 
    '-4': 'America/Caracas', 
    '-3.5': 'America/St_Johns', 
    '-3': 'America/Argentina/Buenos_Aires', 
    '-2': 'Atlantic/Azores', 
    '-1': 'Atlantic/Azores', 
    '0': 'Europe/London', 
    '1': 'Europe/Paris', 
    '2': 'Europe/Helsinki', 
    '3': 'Europe/Moscow', 
    '3.5': 'Asia/Tehran', 
    '4': 'Asia/Baku', 
    '4.5': 'Asia/Kabul', 
    '5': 'Asia/Karachi', 
    '5.5': 'Asia/Calcutta', 
    '6': 'Asia/Colombo', 
    '7': 'Asia/Bangkok', 
    '8': 'Asia/Singapore', 
    '9': 'Asia/Tokyo', 
    '9.5': 'Australia/Darwin', 
    '10': 'Pacific/Guam', 
    '11': 'Asia/Magadan', 
    '12': 'Asia/Kamchatka' 
}; 

alert(timezones[-offset/60]); 

:

आप (this jsfiddle देखें) इस कोड का उपयोग कर सकते हैं।

+0

अच्छा, यह अलर्ट "-330" .. अब मैं इसे 'एशिया/कलकत्ता' दिखाने के लिए कैसे संशोधित कर सकता हूं? – user967144

+0

@ user967144: अद्यतन संस्करण देखें, अब यह आपके द्वारा अपेक्षित नाम पॉपअप करता है। – Tadeck

+0

धन्यवाद लेकिन यह विश्वसनीय नहीं है? – user967144

11

समय क्षेत्र का पता लगाने के लिए ऑफसेट आप इस सुविधा का उपयोग कर सकते हैं:

function get_time_zone_offset() { 
    var current_date = new Date(); 
    return parseInt(-current_date.getTimezoneOffset()/60); 
} 

उदाहरण आप देख सकते हैं here

13

यह मेरी पहली पोस्ट यहाँ है, लेकिन उम्मीद है कि मैं किसी की मदद कर सकते हैं। मुझे मजबूर होना पड़ा क्योंकि इस साइट ने मुझे बहुत मदद की है। धन्यवाद stackoverflow सदस्यों!

http://www.pageloom.com/automatic-timezone-detection-with-javascript

क्या मैं इस जावा स्क्रिप्ट कोड यह बहुत सही है और ऑफसेट यूएसटी से, इसी ओल्सन डाटाबेस समयक्षेत्र नाम वापसी, और डेलाइट सेविंग टाइम मुद्दा (पूर्व संभाल करने में सक्षम हो जाएगा के बारे में समझने से

। - 5:00, अमेरिका/न्यू_यॉर्क, सच)।

http://www.php.net/manual/en/timezones.america.php

ऊपर के लिंक सिर्फ php समर्थित समयक्षेत्र पैरामीटर, जो जहाँ तक मैं इस जावास्क्रिप्ट कोड (मुझे यकीन से तालमेल बता सकता है कि फायदेमंद है की एक सूची मैं सिर्फ क्यों अभी तक पता नहीं है मैं अभी भी अपना कोड लिख रहा हूं और मैं php/mysql के लिए थोडा नया हूं)।

आपके एचटीएमएल पेज पर काम कर रहे इस कोड को प्राप्त करने के बाद आपको एकमात्र बाधा का सामना करना पड़ेगा और फिर MySQL पर यह मान हो जाएगा यदि आपको इसकी आवश्यकता हो। मैंने JQuery का उपयोग करके इन मानों को $ .post के रूप में भेजकर हासिल किया। मुझे लगता है कि यह करने का यह सबसे आसान तरीका है (अगर कोई गलत है तो कृपया मुझे सही करें)। मेरा मानना ​​है कि अन्य विकल्प AJAX कमांड (अधिक जटिल) या कुकीज़ (मुझे लगता है?) का उपयोग कर रहे हैं।

जावा-स्क्रिप्ट कोड से सर्वर (PHP) के मान प्राप्त करने के बाद मैंने उन्हें सत्र चर के रूप में संग्रहीत किया ताकि वे मेरी साइट पर उपयोगकर्ता को अलग-अलग टाइमज़ोन से सामान्य रूप से लॉग इन कर सकें। हालांकि वे आसानी से डेटाबेस में भी सहेजे जा सकते हैं।

यदि आप JQuery मार्ग का उपयोग करते हैं तो यह HTML दस्तावेज़ के शीर्षलेख में होना चाहिए जहां $। पोस्ट को निष्पादित किया जा रहा है।

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 

सबसे अद्यतन टाइमज़ोनेटेक्ट स्क्रिप्ट उस पहले यूआरएल पर पोस्ट किया जा सकता है जिसे मैंने पोस्ट किया था।

//replace this comment with the most updated timezonedetect code from that first link 
var timezone = jstz.determine_timezone(); 
var tzoffset = timezone.offset(); 
var tzname = timezone.name(); 
var tzdst = timezone.dst(); 
$.post("scripts/tzdetect.php", { tzoffset: tzoffset, tzname: tzname, tzdst: tzdst }); 

इस मामले में प्राप्त फ़ाइल tzdetect.php इस तरह दिखनी चाहिए यदि आप सत्र चर के रूप में संग्रहीत डेटा चाहते हैं।

<?php 
session_start(); 
$_SESSION['tzname'] = $_POST['tzname']; 
$_SESSION['tzoffset'] = $_POST['tzoffset']; 
$_SESSION['tzdst'] = $_POST['tzdst']; 
?> 
+1

सारांश: jstz (उर्फ jsTimezoneDetect) का उपयोग करें http://pellepim.bitbucket.org/jstz/ –

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