2011-10-28 15 views
5

का उपयोग करने के लिए फोर्स php strtotime को मैंने इसके बारे में कुछ प्रश्न देखे हैं लेकिन स्पष्ट उत्तर नहीं है ... strtotime() स्ट्रिंग को यूनिक्स टाइमस्टैंप में परिवर्तित करते समय PHP के लिए डिफ़ॉल्ट टाइमज़ोन सेट का उपयोग करेगा।यूटीसी

हालांकि, मैं एक स्ट्रिंग को यूटीसी में यूनिक्स टाइमस्टैम्प में कनवर्ट करना चाहता हूं। चूंकि ऐसा करने के लिए कोई पैरामीटर नहीं है, यह कैसे किया जा सकता है?

जिस स्ट्रिंग को मैं बदलने की कोशिश कर रहा हूं वह है: 2011-10-27T20: 23: 39, जो पहले से ही यूटीसी में है। मैं यूटीसी में एक यूनिक्स टाइमस्टैम्प के रूप में भी प्रतिनिधित्व करना चाहता हूं।

आप

+0

'नया डेटटाइमज़ोन (' यूटीसी ') का उपयोग करने पर भी विचार करें;', http://stackoverflow.com/a/34651091/1066234 –

उत्तर

5

धन्यवाद सेट strtotime कॉल करने से पहले सिस्टम डिफ़ॉल्ट समय क्षेत्र:

date_default_timezone_set('UTC'); 
echo strtotime('2011-10-27T20:23:39')."\n"; 

// Proof: 
print_r(getdate(strtotime('2011-10-27T20:23:39'))); 

// IMPORTANT: It's possible that you will want to 
// restore the previous system timezone value here. 
// It would need to have been saved with 
// date_default_timezone_get(). 

See it in action

+0

क्या यह बाकी लिपि के साथ समस्याएं पैदा करेगा? मुझे लगता है कि मैं इसे बाद में वापस सेट कर सकता हूं? – Brian

+0

@ ब्रायन: इससे समस्याएं हो सकती हैं, हां। लेकिन जब तक आप इसे वापस सेट करते हैं तब तक कोई समस्या नहीं होगी। – Jon

10

मुझे एहसास है कि यह प्रश्न बहुत पुराना है, लेकिन मुझे एक और विकल्प मिला जो सहायक हो सकता है। इसके बजाय करना और फिर php के समय क्षेत्र को पूर्ववत करने के , आप तार का एक भाग के रूप में समय क्षेत्र निर्दिष्ट कर सकते हैं तुम इतनी तरह strtotime को पारित:

echo date_default_timezone_get(); 
output: America/Chicago 

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39')); 
output: 2011-10-28 01:23:39 

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago')); 
output: 2011-10-28 01:23:39 

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 UTC')); 
output 2011-10-27 20:23:39 

नोट: मैं PHP 5.5.9 पर हूँ, लेकिन यह काम करना चाहिए किसी भी PHP संस्करण में।

+1

यह उत्तर स्वीकृत उत्तर के लिए अधिक बेहतर है। +1 – Druckles

+2

यह आसान है लेकिन आपको उपयोगकर्ता इनपुट के लिए देखना होगा। यदि आप केवल उपयोगकर्ता द्वारा टाइप किए गए संदेश में भेजते हैं तो आप कभी नहीं जानते कि वे टाइमज़ोन या कुछ ऐसा करने जा रहे हैं जो स्ट्रिंग को गड़बड़ कर देगा। –

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