2010-10-11 9 views
5

क्या किसी दिए गए स्थान के लिए टाइमज़ोन ऑफसेट प्राप्त करने के लिए PHP में यह संभव है? जैसे जब "+1100" के रूप में टाइमज़ोन ऑफसेट प्राप्त करने के लिए "सिडनी/ऑस्ट्रेलिया" स्थान दिया गया। बोनस इस समारोह के लिए दिमाग की बचत को ध्यान में रखेगा (यानी यह डेलाइट बचत के बारे में पता है और ऑफसेट को समायोजित करता है)।किसी दिए गए स्थान के लिए टाइमज़ोन ऑफ़सेट प्राप्त करें

+0

क्या आप किसी दिए गए टाइमज़ोन में दिनांक/समय प्रदर्शित करने का प्रयास कर रहे हैं? –

+0

क्या आपका मतलब आधिकारिक टाइमज़ोन नाम, या दुनिया का कोई भी स्थान है? –

+0

@ डेविड। मैं यूटीसी स्टोर कर रहा हूं और मैं उस समय टिकट को किसी भी स्थानीय समय में बदलने में सक्षम होना चाहता हूं। – Luke

उत्तर

6

एक स्थानीय दिनांक/समय आप निम्नलिखित, जहां 'यूरोप/बर्लिन' उपयोगकर्ता के समय क्षेत्र के साथ प्रतिस्थापित किया जाएगा उपयोग कर सकते हैं प्रदर्शित करने के लिए।

$date = new DateTime($value); 
$date->setTimezone(new DateTimeZone('Europe/Berlin')); 
echo $date->format('Y-m-d H:i:s'); 
3

सुनिश्चित नहीं हैं कि क्यों की जरूरत है "1100" (बजाय एक दशमलव प्रतिनिधित्व की तुलना में), लेकिन आप इसका उपयोग कर सकते हैं:

$dt = new DateTime(null, new DateTimeZone('Australia/Sydney')); 
$offset = $dt->getOffset()/60/60; // 11 

$hours = intval($offset); 
$minutes = str_pad((string)($offset - $hours) * 60, 2, '0', STR_PAD_RIGHT); 
echo $hours.$minutes; // 1100 

'2010-10-01' साथ null बदलें और आप मिल जाएगा 1000

17

आप उपयोग कर सकते हैं कक्षा।

<?php 
$timezone = new DateTimeZone("Australia/Sydney"); 
$offset = $timezone->getOffset(new DateTime("now")); // Offset in seconds 
echo ($offset < 0 ? '-' : '+').round($offset/3600).'00'; // prints "+1100" 
?> 
संबंधित मुद्दे