मुझे जीएमटी -8 टाइमज़ोन (पीएसटी) के साथ प्राप्त एक तिथि को मानव पठनीय प्रारूप में परिवर्तित करने के लिए PHP DateTime
का उपयोग करने में कठिनाई हो रही है टाइमज़ोन जीएमटी -7 (पीडीटी)।टाइमज़ोन पीएसटी को पीडीटी (जीएमटी -8 से जीएमटी -7) में परिवर्तित करने और कनवर्ट करने के लिए PHP डेटटाइम का उपयोग करना
$tz = new DateTimeZone('America/Los_Angeles');
$saleEndDate = new DateTime("2016-11-07T17:30:00-08:00");
$saleEndDate->setTimezone($tz);
echo $saleEndDate->format('Y-m-d H:i:s');
ऊपर कोड के उत्पादन में है: 2016-11-07 17:30:00
यहाँ एक उदाहरण है। हालांकि, इसे 2016-11-07 18:30:00 प्रदर्शित करना चाहिए क्योंकि America/Los_Angeles
अब डेलाइट बचत (जीएमटी -7, पीडीटी) में है।
से मैं क्या DateTime docs में पढ़ा है, new DateTime
आदेश है कि स्ट्रिंग 2016-11-07T17:30:00-08:00
एक GMT -8 समय क्षेत्र है व्याख्या करने के लिए सक्षम होना चाहिए:
समय क्षेत्र पैरामीटर और वर्तमान समय क्षेत्र अनदेखी कर रहे हैं जब समय पैरामीटर में यूनिक्स टाइमस्टैम्प (जैसे 946684800) शामिल है या एक टाइमज़ोन निर्दिष्ट करता है (उदाहरण के लिए 2010-01-28T15: 00: 00 + 02: 00)।
फिर भी, मुझे नहीं लगता कि DateTime
सही ढंग से जीएमटी -8 को पहचान रहा है।
क्या किसी को पता है कि टाइमज़ोन के बीच सही रूप से परिवर्तित करने के लिए क्या दृष्टिकोण आवश्यक है?
अद्यतन:
मैं भी DateTime
निर्माता के लिए दूसरा पैरामीटर के रूप में एक DateTimeZone
में गुजर की कोशिश की है, लेकिन यह भी कोई लाभ नहीं हुआ:
$tz = new DateTimeZone('America/Los_Angeles');
$saleEndDate = new DateTime("2016-11-07T17:30:00-08:00", new DateTimeZone("America/Los_Angeles"));
$saleEndDate->setTimezone($tz);
echo $saleEndDate->format('Y-m-d H:i:s');
भी काम नहीं करता:
$tz = new DateTimeZone('America/Los_Angeles');
$saleEndDate = new DateTime("2016-11-07T17:30:00", new DateTimeZone("PST"));
$saleEndDate->setTimezone($tz);
echo $saleEndDate->format('Y-m-d H:i:s');
यह भी काम नहीं करता है:
$tz = new DateTimeZone("PDT");
$saleEndDate = new DateTime("2016-11-07T17:30:00", new DateTimeZone("PST"));
$saleEndDate->setTimezone($tz);
echo $saleEndDate->format('Y-m-d H:i:s');
मैंने डाउनवोट नहीं किया था, लेकिन शायद मुझे कुछ समझ में नहीं आ रहा है ... आपको लगता है कि इसे 18:30 में क्यों परिवर्तित करना चाहिए क्योंकि यह अभी डेलाइट सेविंग है? -8 मूल रूप से लॉस एंजिल्स है इसलिए शायद यहां परिवर्तित करने के लिए कुछ भी नहीं है। –
http://stackoverflow.com/questions/17694894/different-timezone-types-on-datetime-object "संलग्न दिनांक 3 टाइमज़ोन के साथ डेटटाइम ऑब्जेक्ट्स डीएसटी को सही तरीके से अनुमति देगा।" आपका '$ saleEndDate' टाइप 1 के रूप में बनाया जा रहा है। – ceejayoz
@PawelDubiel इसे परिवर्तित करना चाहिए, क्योंकि प्रदान किया गया समय' -8' है, लेकिन टाइमज़ोन सेट '-7' – zerkms