मैं कैसे PHP में आईएसओ 8601 के लिए डेटाटाइम परिवर्तित करते हैं


103

मैं अपना समय 2010-12-30 23:21:46आईएसओ 8601 तिथि प्रारूप से कैसे परिवर्तित करूं ? (-_-;)


1
@Gordon हाँ मुझे लगभग ४,५३० परिणाम मिले और मुझे @alex से उत्तर मिला
वाह

@ कृपया बताएं कि 4530 परिणामों में से किसी ने भी आपके प्रश्न का उत्तर क्यों नहीं दिया।
गॉर्डन

1
@Gordon मैं अभी भी सीख रहा हूँ कि A से Z तक कैसे लिखना है लेकिन मैंने पाया कि वे मुझे Z से A तक लिखना सिखाते हैं :)
wow

@ नहीं, वे आपको वर्णमाला ($ से, $) लिखना सिखाते हैं। उनमें से लगभग सभी आपको उपयोग करने के लिए date($format, strtotime($dateString))या DateTimeऑब्जेक्ट के बराबर बताते हैं । वे केवल उन कार्यों के इनपुट में भिन्न होते हैं। आपको बस इतना करना है कि PHP मैन्युअल में कोरपिंग पृष्ठों पर जाएं और पता करें कि इनपुट क्या है।
गॉर्डन

3
@Gordon हाँ आप सही हैं। मैं सिर्फ वर्णमाला जानता था और अब मधुमक्खी का वर्तनी करता हूं। आशा है कि मैं सही स्कूल में हूँ।
वाह

जवाबों:


229

वस्तु के उन्मुख

यह अनुशंसित तरीका है।

$datetime = new DateTime('2010-12-30 23:21:46');

echo $datetime->format(DateTime::ATOM); // Updated ISO8601

प्रक्रियात्मक

PHP के पुराने संस्करणों के लिए, या यदि आप प्रक्रियात्मक कोड के साथ अधिक सहज हैं।

echo date(DATE_ISO8601, strtotime('2010-12-30 23:21:46'));

3
प्रश्न, आउटपुट यह है 2010-12-30T23:21:46+1100कि इसे कैसे बनाया जाए 2010-12-30T23:21:46+11:00?
वाह

2
@ इस कोशिश करो preg_replace('/(?<=\d{2})(?=\d{2}$)/', ':', '2010-12-30T23:21:46+1100')। यह आउटपुट करता है 2010-12-30T23:21:46+11:00
एलेक्स


12
date('c', strtotime('2010-12-30 23:21:46'))अच्छा @ गोर्डन :)
वाह

8
मैं यह नोट करूंगा कि उपयोग DATE_ISO8601करने से डेट स्ट्रिंग पैदा होती है जो ISO8601 से थोड़ी अलग होती है (बृहदान्त्र टीबी में गायब है, ISO8601 को उम्मीद है कि यह सभी या कोलोन के बिना सभी के साथ हो सकता है, मिश्रण नहीं) - date('c')एक सख्त आईएसओ 8601 वैध तारीख का उत्पादन करता है - यदि कोड एक सख्त आईएसओ 8601 डेटाइम प्रारूप की अपेक्षा करता है, तो इससे कीड़े का पता लगाना मुश्किल हो सकता है। Ref: en.wikipedia.org/wiki/ISO_8601
ckm

38

PHP 5 के बाद आप इसका उपयोग कर सकते हैं: echo date("c");ISO 8601 स्वरूपित डेटाइम फॉर्म।

http://ideone.com/nD7piL

टिप्पणियों के लिए ध्यान दें:

इस के संबंध में , ये दोनों अभिव्यक्तियाँ समयक्षेत्र के लिए, मूल प्रारूप के लिए मान्य हैं ±[hh]:[mm], ±[hh][mm], or ±[hh]:।

लेकिन ध्यान दें कि, + 0X: 00 सही है, और विस्तारित उपयोग के लिए + 0X00 गलत है। इसलिए इसका उपयोग करना बेहतर है date("c")। इसी तरह की एक चर्चा यहाँ


1
के साथ मामूली अंतर पर ध्यान दें DATE_ISO8601; +0X:00बनाम +0X00
Ja --ck

@ Ja @ck को नीचे मतदान की आवश्यकता है, तब? एक मामूली अंतर आमतौर पर एक बुरा विचार है।
रयबो ११३

@ rybo111 मुझे इस उत्तर को डाउन-वोट करने का कोई कारण नहीं दिखता है; तकनीकी रूप से, दोनों ही 'c'और DATE_ISO8601ISO8601 के समय के निरूपण का उत्पादन करते हैं।
जैक

मैंने जवाब देने के लिए एक नोट जोड़ा।
त्रिनि

@ Ja @ck DATE_ISO8601एक मान्य ISO8601 प्रतिनिधित्व का उत्पादन नहीं करता है। DATE_ATOM हालांकि करता है
कप्तान स्पष्ट

4

आईएसओ 8601 से यूनिक्सटैंप में कैसे परिवर्तित करें:

strtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500

Unixtimestamp से ISO 8601 (टाइमज़ोन सर्वर) में कैसे परिवर्तित करें:

date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00

Unixtimestamp से ISO 8601 (GMT) में कैसे परिवर्तित करें:

date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00

Unixtimestamp से ISO 8601 (कस्टम टाइमज़ोन) में कैसे परिवर्तित करें:

date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00


1

यदि आप डेटाइम-लोकल में मान सेट करने का प्रयास करते हैं

date("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));

//output : 2010-12-30T23:21

इसी तरह के समाधान को स्वीकृत उत्तर में दी गई टिप्पणियों में उल्लिखित किया गया है
sushant047
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.