2009-12-06 22 views
8

से "वाई-एम-डी एच: आई: एस" जैसे दिनांक प्रारूप प्राप्त करें, क्या किसी ने तिथि के प्रारूप वाले दिनांक से स्ट्रिंग प्राप्त करने का कोई तरीका ज्ञात किया है?एक दिनांक दिनांक

<?php 
    $date = date ("2009-10-16 21:30:45"); 

    // smething like this? 
    print date_format ($date); 
?> 

मैं इस पूछना क्योंकि मैं इस समारोह मैंने लिखा गया है, सर्वर से एक अलग समय क्षेत्र के साथ तारीख पाने के लिए हमेशा की तरह अनुकूलित करना चाहते हैं, विशेष रूप से बातें

<?php 
function get_timezone_offset ($timezone, $date = null, $format = null, $offset_timezone = null) { 
    if ($date == null) $date = date ($format); 
    if ($offset_timezone == null) $offset_timezone = date_default_timezone_get(); 
    if ($format == null) $format = "Y-m-d H:i:s"; 
    // I'd like to find a way that can avoid me to write $format and get it directly from the date i pass, but I don't know a particular method can do it 
    // if ($format == null) $format = date_format ($date); 

    $date_time = new DateTime ($date, new DateTimeZone ($offset_timezone)); 
    $date_time->setTimeZone (new DateTimeZone ($timezone)); 
    return $date_time->format ($format); 
} 

print get_timezone_offset ("Europe/Rome"); 
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s")); 
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s"), "Y-m-d H:i:s"); 
print get_timezone_offset ("Europe/Rome", "2009-10-16 21:30:45", "Y-m-d H:i:s", "America/New_York"); 
?> 

मैं से बचने के लिए आशा कर के बिना प्रदर्शन कारणों के लिए नियमित अभिव्यक्तियां, लेकिन मुझे नहीं पता कि यह संभव है या नहीं

उत्तर

4

जहां तक ​​मुझे पता है, पीछे की ओर काम करने की कोई गारंटी नहीं है। अपेक्षित प्रसिद्ध प्रारूपों (उदाहरण के लिए \d{2,4}[-/]\d{2}[-/]\d{2} "वाई-एम-डी" के लिए नियमित अभिव्यक्तियों का मिलान करने का सबसे अच्छा तरीका हो सकता है) लेकिन मैं नियमित अभिव्यक्तियों का उपयोग किए बिना मिलान करने का एक आसान तरीका नहीं सोच सकता। आपको यह भी जांचना होगा कि पार्स किए गए प्रारूप को समझ में आता है, और आप 2 मार्च 200 9 जैसी संदिग्ध तिथियों के बारे में ज्यादा कुछ नहीं कर सकते हैं, जिसे 09/03/02, 2009-03-02, 02/03/09, 03/02/09, या यहां तक ​​कि 09/02/03 के रूप में प्रदर्शित किया जा सकता है।

+1

एकमात्र व्यक्ति जो वास्तव में ओपी के प्रश्न को समझता था! –

9

आप स्ट्रिंग दिनांक को strtotime के साथ टाइमस्टैम्प में परिवर्तित कर सकते हैं और जो भी चाहें टाइमस्टैम्प के साथ कर सकते हैं। ;)

<?php 
$date = "2009-10-16 21:30:45"; 
$ts = strtotime($date); 
echo date('Y-m-d', $ts); 
?> 
+1

यह मेरे लिए लग रहा है वह अपने स्वरूप में एक तारीख से पीछे की ओर काम करने के लिए चाहता है की तरह। (यानी "200 9 -10-16" से "वाई-एम-डी") – DMI

+0

मेरी गलती - मैंने प्रतिलिपि बनाई है कोड बहुत तेज है - अब यह ठीक है। – hsz

3

PHP दिनांक() फ़ंक्शन एक और अधिक पढ़ने योग्य दिनांक और समय के लिए टाइमस्टैम्प स्वरूपित करता है। मैं जानता हूँ कि यह देर हो चुकी है, लेकिन यह करने के लिए सबसे अच्छा होगा आप के लिए परियोजना के लिए इस कोड का प्रयास करें,

<?php 
    $date=date_create('2014-10-20'); 
    date_time_set($date,12,20,55); 
    echo date_format($date,'Y-m-d H:i:s'); 
    ?> 
संबंधित मुद्दे