2011-06-28 11 views
16

को देखते हुए निम्नलिखित तार:पीएचपी: यूनिक्स टाइमस्टैम्प में बदलने का दिनांक स्ट्रिंग

  • 01/01/11
  • 1/1/11
  • 1/1/2011
  • 01/1/2011
  • 1-1-2011
  • आदि

मैं टी कैसे परिवर्तित एक यूनिक्स टाइमस्टैम्प के लिए हेस। ध्यान दें कि ज्यादातर मामलों में, यह विभिन्न डिलीमीटर के साथ dd mm yyyy के प्रारूप में होगा।

उत्तर

25

strtotime, strptime या DateTime कक्षा पर देखें।

strtotime उदाहरण:

$timestamp = strtotime('1/1/2011'); 

प्रत्येक समारोह में यह चेतावनी है है। उदाहरण के लिए, strtotime कहा गया है कि के लिए दस्तावेज़: मीटर में

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

तुम भी preg_match उपयोग करने वाले सभी 3 भागों पर कब्जा और mktime उपयोग कर अपने खुद टाइमस्टैम्प बनाने के लिए कर सकता है।

preg_match उदाहरण:

if (preg_match('/^(?P<day>\d+)[-\/](?P<month>\d+)[-\/](?P<year>\d+)$/', '1/1/2011', $matches)) 
{ 
    $timestamp = mktime(0, 0, 0, ($matches['month'] - 1), $matches['day'], $matches['year']); 
} 
+0

आपका रेगेक्स डीडी-एमएम-वाई प्रारूप प्रारूप मानता है, जो मुझे यकीन नहीं है। – StackOverflowNewbie

+0

@StackOverflowNewbie - आपके प्रश्न ने कहा: "ध्यान दें कि ज्यादातर मामलों में, यह डीडी मिमी yyyy के प्रारूप में विभिन्न delimiters के साथ होगा।" तो मैं उस प्रारूप के साथ गया लेकिन आप मूल प्रारूप में 'elseif' कथन जोड़ सकते हैं जो विभिन्न प्रारूपों की जांच करता है और 'regex' को अधिक विशिष्ट बना देता है (यानी \ d + एक पैटर्न का उपयोग करें जो महीने के लिए 0-12 और 0 का वर्णन करता है दिनों के लिए -31)। बेशक, 1/2/13 के मामले में, यह बताना असंभव है कि कौन सा है जब तक आप प्रारूप को नहीं जानते। –

0

आप शायद strtotime function के लिए देख रहे हैं।

हालांकि एक सावधानी के रूप में यह प्रत्येक संभावित स्ट्रिंग प्रारूप को यूनिक्स टाइमस्टैम्प (युग) में परिवर्तित कर देगा क्योंकि प्रत्येक समय प्रत्येक स्ट्रिंग को अनजाने में पार्स करना मुश्किल होता है।

3
$to='23.1.2014-18:16:35' 
list($part1,$part2) = explode('-', $to); 
list($day, $month, $year) = explode('.', $part1); 
list($hours, $minutes,$seconds) = explode(':', $part2); 
$timeto = mktime($hours, $minutes, $seconds, $month, $day, $year); 
echo $timeto; 
संबंधित मुद्दे