2011-04-21 16 views
45

मैं दिनांक/समय स्ट्रिंग (उदाहरण के लिए 2011-01-01 15:00:00) कैसे परिवर्तित करूं जो यूटीसी किसी भी टाइमज़ोन PHP समर्थन, जैसे अमेरिका/न्यू_यॉर्क, या यूरोप /सैन मैरीनो।यूटीसी तिथि/समय स्ट्रिंग टाइमज़ोन

उत्तर

108

PHP के DateTime वस्तु बहुत लचीला है।

$UTC = new DateTimeZone("UTC"); 
$newTZ = new DateTimeZone("America/New_York"); 
$date = new DateTime("2011-01-01 15:00:00", $UTC); 
$date->setTimezone($newTZ); 
echo $date->format('Y-m-d H:i:s'); 
+1

धन्यवाद। यह बहुत अच्छा काम करता है। – amax

+1

केविन, तुम दा आदमी! – cj5

+0

यह है। तुमने यह किया! –

-2

कैसे के बारे में:

$timezone = new DateTimeZone('UTC'); 
$date = new DateTime('2011-04-21 13:14', $timezone); 
echo $date->format; 
+1

यह – amax

+0

'$ तारीख> प्रारूप काम नहीं किया()' 1 की आवश्यकता है पैरामीटर। देखें [यह] (http://php.net/manual/en/datetime.format.php) – Raptor

+0

$ दिनांक = नया दिनांक समय ('2011-04-21 13:14', $ टाइमज़ोन) क्या यह गायब नहीं है यूटीसी के लिए सेकंड? – Quadrivium

1

यूटीसी मान लिया जाये कि स्ट्रिंग तो में शामिल है नहीं:

date_default_timezone_set('America/New_York'); 
$datestring = '2011-01-01 15:00:00'; //Pulled in from somewhere 
$date = date('Y-m-d H:i:s T',strtotime($datestring . ' UTC')); 
echo $date; //Should get '2011-01-01 10:00:00 EST' or something like that 

या आप दिनांक समय वस्तु इस्तेमाल कर सकते हैं।

1
function _settimezone($time,$defaultzone,$newzone) 
{ 
$date = new DateTime($time, new DateTimeZone($defaultzone)); 
$date->setTimezone(new DateTimeZone($newzone)); 
$result=$date->format('Y-m-d H:i:s'); 
return $result; 
} 

$defaultzone="UTC"; 
$newzone="America/New_York"; 
$time="2011-01-01 15:00:00"; 
$newtime=_settimezone($time,$defaultzone,$newzone); 
2

PHP के DateTime वस्तु बहुत लचीला है।

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

जेनेरिक समारोह

function convertDateFromTimezone($date,$timezone,$timezone_to,$format){ 
$date = new DateTime($date,new DateTimeZone($timezone)); 
$date->setTimezone(new DateTimeZone($timezone_to)); 
return $date->format($format); 
} 

उपयोग:

echo convertDateFromTimezone('2011-04-21 13:14','UTC','America/New_York','Y-m-d H:i:s'); 

आउटपुट:

2011-04-21 09:14:00

0

किसी भी टाइमज़ोन से किसी भी टाइमस्टैम्प को प्रारूपित करने के लिए सामान्य उद्देश्य सामान्यीकरण फ़ंक्शन। एक रिलेशनल डेटाबेस में विभिन्न टाइमज़ोन से उपयोगकर्ताओं के डेटाेटिमस्टैम्प को संग्रहीत करने के लिए बहुत उपयोगी है। यूटीसी के रूप में डेटाबेस तुलना दुकान टाइमस्टैम्प और के लिए के साथ gmdate('Y-m-d H:i:s')

/** 
* Convert Datetime from any given olsonzone to other. 
* @return datetime in user specified format 
*/ 

function datetimeconv($datetime, $from, $to) 
{ 
    try { 
     if ($from['localeFormat'] != 'Y-m-d H:i:s') { 
      $datetime = DateTime::createFromFormat($from['localeFormat'], $datetime)->format('Y-m-d H:i:s'); 
     } 
     $datetime = new DateTime($datetime, new DateTimeZone($from['olsonZone'])); 
     $datetime->setTimeZone(new DateTimeZone($to['olsonZone'])); 
     return $datetime->format($to['localeFormat']); 
    } catch (\Exception $e) { 
     return null; 
    } 
} 

प्रयोग का उपयोग करें:

$from = ['localeFormat' => "d/m/Y H:i A", 'olsonZone' => 'Asia/Calcutta']; 

$to = ['localeFormat' => "Y-m-d H:i:s", 'olsonZone' => 'UTC']; 

datetimeconv("14/05/1986 10:45 PM", $from, $to); // returns "1986-05-14 17:15:00" 
संबंधित मुद्दे