2011-01-18 10 views
15

मैं समय-समय पर जीएमटी ऑफ़सेट में एक टाइमज़ोन नाम ("एशिया/दुबई", "यूरोप/एंडोरा", आदि) को परिवर्तित करने के बारे में कैसे जाउंगा (या यहां तक ​​कि सेकंड, क्योंकि मैं इसे वहां से परिवर्तित कर सकता हूं)।PHP टाइमज़ोन नाम ऑफसेट

अधिकांश लोग रिवर्स के लिए पूछते हैं, लेकिन मुझे GeoNames द्वारा प्रदान किए गए टाइमज़ोन नाम से टाइमज़ोन ऑफ़सेट प्राप्त करने की आवश्यकता है।

+0

यह सीधे आपके प्रश्न का उत्तर नहीं है, लेकिन आपकी समस्या का समाधान हो सकता है। ऐसा लगता है कि आप ऑफसेट के लिए सीधे GeoNames से पूछ सकते हैं: http://api.geonames.org/timezoneJSON?lat=47.01&lng=10.2 –

+0

हाँ, मैं वास्तव में प्राथमिक रूप से भू-नाम का उपयोग कर रहा हूं। मुख्य समस्या यह है कि वे वर्तमान में अधिभारित हैं, इसलिए जब वे हैं तो मैं बैकअप लेने की कोशिश कर रहा हूं। –

उत्तर

25

आप निम्नलिखित

<?php 

$timezone = 'Pacific/Nauru'; 
$time = new \DateTime('now', new DateTimeZone($timezone)); 
$timezoneOffset = $time->format('P'); 
?> 
+1

को –

+0

में आउटपुट करने के लिए http://www.php.net/manual/en/function.date.php पर एक नज़र डालें, "नई डेटटाइम" और "समय()" को "नई दिनांक समय" में बदलते समय पूरी तरह से काम करता है " 'अभी व'"। धन्यवाद! –

19

एक अन्य विकल्प का उपयोग उपलब्ध DateTimeZone::getOffset() विधि है, जो निर्धारित तिथि/समय समय क्षेत्र के लिए सेकंड में ऑफसेट रिटर्न उपयोग करने के लिए किया जाएगा कर सकते हैं।

$timezone = new DateTimeZone("Europe/Andorra"); 
$offset = $timezone->getOffset(new DateTime); 
6

मैं PHP Carbon का उपयोग कर की तरह है:

$offset = Carbon::now('Europe/Andorra')->offsetHours; 

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

  • कोई संबंधित समस्या नहीं^_^