2010-09-03 8 views
6

मेरे पास इनपुट फ़ाइल में निम्न दिनांक स्ट्रिंग: 20100902040003 के साथ Time नामक एक रिकॉर्ड है।php - टाइमस्टैम्प स्ट्रिंग को पठनीय समय प्रारूप में बदलने में मदद

मुझे इस प्रारूप के रूप में कुछ और पठनीय रूपांतरित करने के लिए कुछ PHP सहायता की आवश्यकता है: 2010-09-02 04:00:03 और मैं इसे डेटा डेटा प्रिंट करने के रूप में प्रारूपित करना चाहता हूं।

उत्तर

2

के बाद से टाइमस्टैम्प एक यूनिक्स टाइमस्टैम्प नहीं है, आप substr()

$timestamp = "20100902040003"; 

$year = substr($timestamp, 0, 3); 
$month = substr($timestamp, 4, 5); 
$day = substr($timestamp, 6, 7); 
$hour = substr($timestamp, 8, 9); 
$minute = substr($timestamp, 10, 11); 
$second = substr($timestamp, 12, 13); 

उपयोग करने के लिए तो फिर तुम व्यवस्था का उपयोग कर sprintf()

$formatted_timestamp = sprintf('%s-%s-%s %s:%s:%s', $year, $month, $day, $hour, $minute, $second); 
+0

धन्यवाद। क्या मैं इस कार्य को अपने foreach कथन में डाल दूंगा क्योंकि मैं गतिशील रूप से पंक्ति बना रहा हूं? धन्यवाद। – cjd143SD

+0

मैंने प्रारूप को ठीक किया है क्योंकि जी शून्य के बिना घंटे प्रिंट करेगा, आपको इसके बजाय एच का उपयोग करना होगा। जब आप सरणी बनाते हैं, या जब आप इसे प्रिंट करते हैं, तो दोनों कार्य करते हैं, तो आप फ़ंक्शन डाल सकते हैं। – leonardys

10
$timestamp = "20100902040003"; 
echo date('Y-m-d H:i:s', strtotime($timestamp)); // output: 2010-09-02 04:00:03 
+0

@downvoter: यह परिणाम में उल्लिखित परिणाम दे रहा है। क्या आप इसे विस्तार से समझाएंगे? – NAVEED

+0

मैंने गलत तरीके से +1 से +1 को बदल दिया। मैं 'strtotime()' कॉल से चूक गया। – BoltClock

+0

@ कोडाडैडिक्ट क्योंकि फ़ंक्शन 'स्ट्रेटोटाइम' इसे टाइमस्टैम्प – Mischa

2

यदि आप सुनिश्चित हैं कि में सभी रिकॉर्ड आपकी इनपुट फ़ाइल में प्रारूप YYYYMMDDHHmmss है, आप स्वयं स्ट्रिंग को विभाजित करने का प्रयास कर सकते हैं और फिर date() का उपयोग कर संयोजन में कर सकते हैं सार्थक दिनांक प्रारूप उत्पन्न करने के लिए mktime() के साथ।

+0

धन्यवाद। हां, सभी अभिलेखों में वही प्रारूप है। क्या आप मुझे एक उदाहरण दिखा सकते हैं? – cjd143SD

+1

स्ट्रेटोटाइम() "20100902040003" – nohat

+0

जैसे आईएसओ 8601 टाइमस्टैम्प को समझता है, मुझे लगता है कि नोहाट का समाधान बेहतर है क्योंकि यह पूरी तरह से 'तारीख' और 'एमकेटाइम' कार्यों को छोड़ देता है। – BoltClock

2

चूंकि आपका डेटा पहले से ही सही प्रारूप में है, इसलिए इसे केवल कुछ विराम चिह्न की आवश्यकता है, इसलिए आप डेट-पार्सिंग और डेट-फॉर्मेटिंग फ़ंक्शंस के बजाय नियमित अभिव्यक्ति का उपयोग कर सकते हैं।

$timestamp = "20100902040003"; 
preg_replace('/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/', 
      '\1-\2-\3 \4:\5:\6', $timestamp) 

पैदावार:

2010-09-02 04:00:03 
संबंधित मुद्दे