2012-11-28 15 views
6

मैं datestrings है कि इस तरह दिखता है:लौटने strtotime झूठी

"2012 28 Nov 21:00 CET" 

strtotime("2012 28 Nov 21:00 CET") वापसी झूठी।

क्या इस स्ट्रिंग को डेट ऑब्जेक्ट में कनवर्ट करने का कोई तरीका है, या क्या मुझे इसे अलग प्रारूपित करने की आवश्यकता है?

+2

['date_parse_from_format'] (http://php.net/manual/en/function.date-parse-from-format.php) का उपयोग करने का प्रयास करें। –

+1

आपको स्ट्रिंग-डेट कहां से मिल रहा है? – phpisuber01

+0

@ phpisuber01 इसे एक HTML पृष्ठ से निकालने। – Johan

उत्तर

13

2012 28 Nov 21:00 CET अजीब दिनांक/समय है प्रारूप। वाई-डी एम? आप कहां मिल रहे हो

किसी भी हाल में DATETIME, वस्तु एक विधि createFromFormat कि एक बेहतर काम कर देगा कि पार्स करने है:

$dt = DateTime::createFromFormat("Y d M H:i T", '2012 28 Nov 21:00 CET'); 
$ts = $dt->getTimestamp(); 
echo $ts; // 1354132800 

इसे यहाँ का प्रयास करें: http://codepad.viper-7.com/NfAmcw

strtotime एक "अंग्रेजी शाब्दिक datetime" उम्मीद (according to the manual) , जो वाईडीएम नहीं है। किसी भी समय strtotime झूठा लौटाता है, यह आपकी स्ट्रिंग को समझ में नहीं आता है, जो इस एप्लिकेशन में अपेक्षित है।

नोट:: मीटर में

तिथियां/दि/व या DMY प्रारूपों विभिन्न घटकों के बीच विभाजक को देखकर disambiguated कर रहे हैं: यदि विभाजक इस मुद्दे के साथ मैन्युअल पृष्ठ सौदों पर एक नोट स्लैश (/) है, तो अमेरिकी एम/डी/वाई माना जाता है; जबकि विभाजक एक डैश (-) या एक बिंदु (।) है, तो यूरोपीय डी-एम-वाई प्रारूप माना जाता है।

संभावित अस्पष्टता से बचने के लिए, आईएसओ 8601 (YYYY-MM-DD) दिनांक या डेटटाइम :: createFromFormat() संभव होने पर उपयोग करना सबसे अच्छा है।

यह ठीक है, DateTime दिनांक या समय के साथ किसी भी बातचीत के लिए एक बेहतर उपकरण है।

प्रलेखन

+0

शानदार! आपका बहुत बहुत धन्यवाद! – Xyon

1

strtotime दिनांक वस्तु नहीं बनाता है, यह बस आपके इनपुट को पार्स करने का प्रयास करता है और एक यूनिक्स टाइमस्टैम्प देता है।

आप यहाँ मान्य स्वरूप पा सकते हैं: http://www.php.net/manual/en/datetime.formats.php

echo strtotime("2012-11-28T21:00:00+01:00"); 

उत्पादन 1354132800

एक php DateTime वस्तु बनाने के लिए आप यह कर सकता है:

$date = new DateTime('2012-11-28T21:00:00+01:00'); 
echo $date->format('Y-m-d H:i:s'); 
संबंधित मुद्दे