/ / Php में एक पुनः प्राप्त तिथि के बदलते समय - php, दिनांक, डेटाइम, ड्रुपल

Php - php, date, datetime, drupal में पुनर्प्राप्त तिथि का टाइमज़ोन बदलना

मैं डेटाबेस से 2013-09-15 08:45:00 के प्रारूप में एक तिथि प्राप्त कर रहा हूं, जो यूटीसी में सेट है और मुझे इसे किसी अन्य डायनेमिक टाइमज़ोन (उपयोगकर्ता पर आधारित) में बदलने की आवश्यकता है

अब तक मैं "है

$datetime = $row->field_data_field_performance_times_field_performance_times_v;
$eventDate = DateTime::createFromFormat("Y-m-d H:i:s", $datetime, new DateTimeZone($user->timezone));
$performance_time = date_format($eventDate, "l, j F, Y, H:i");

लेकिन यह timezone नहीं बदलता है। कोई भी विचार क्या गलत है? यह मेरे मामले में +2 घंटे होना चाहिए।

उत्तर:

उत्तर № 1 के लिए 7

आपका इनपुट डेटाटाइम UTC में है, न कि उपयोगकर्ता का टाइमज़ोन। इसलिए सबसे पहले आपको यूटीसी में डेटाटाइम ऑब्जेक्ट बनाना होगा, और फिर उपयोगकर्ता के लिए टाइमज़ोन सेट / परिवर्तित करें:

$dt = new DateTime("2013-09-15 08:45:00", new DateTimeZone("UTC"));
print_r($dt);
/*
DateTime Object
(
[date] => 2013-09-15 08:45:00
[timezone_type] => 3
[timezone] => UTC
)
*/

अब आपके पास UTC समयक्षेत्र में डेटाटाइम है। यदि आप टाइमजोन बदलने की इच्छा रखते हैं, तो कॉल करें ->setTimezone() डेटटाइम ऑब्जेक्ट पर:

$dt->setTimezone(new DateTimeZone("Europe/Berlin"));
print_r($dt);
/*
DateTime Object
(
[date] => 2013-09-15 10:45:00
[timezone_type] => 3
[timezone] => Europe/Berlin
)
*/

अनुलेख क्योंकि इनपुट 2013-09-15 08:45:00 मानक डेटाटाइम प्रारूप में है, आपको उपयोग करने की आवश्यकता नहीं है DateTime::createFromFormat.