it-swarm.com.de

Konvertieren Sie das Datumsformat JJJJ-MM-TT => TT-MM-JJJJ

Ich versuche, ein Datum von JJJJ-MM-TT in TT-MM-JJJJ umzuwandeln (aber nicht in SQL). Ich weiß jedoch nicht, wie für die Datumsfunktion ein Zeitstempel erforderlich ist, und ich kann keinen Zeitstempel aus dieser Zeichenfolge abrufen.

Wie ist das möglich?

450
matthy

Verwenden Sie strtotime() und date():

$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));

(Siehe die strtotime und date Dokumentation auf der PHP Site.)

Beachten Sie, dass dies eine schnelle Lösung für die ursprüngliche Frage war. Für umfangreichere Konvertierungen sollten Sie wirklich die Klasse DateTime zum Parsen und Formatieren verwenden :-)

988
richsage

Wenn Sie die Konvertierung von strtotime vermeiden möchten (z. B. kann strtotime Ihre Eingaben nicht analysieren), können Sie Folgendes verwenden:

$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('d-m-Y');

Oder äquivalent:

$newDateString = date_format(date_create_from_format('Y-m-d', $dateString), 'd-m-Y');

Sie geben zunächst das Format $ dateString an, in dem sich $ newDateString befindet.

Oder wenn das Quellformat immer "Y-m-d" (jjjj-mm-tt) ist, verwenden Sie einfach DateTime :

<?php
    $source = '2012-07-31';
    $date = new DateTime($source);
    echo $date->format('d.m.Y'); // 31.07.2012
    echo $date->format('d-m-Y'); // 31-07-2012
?>
257
ceiroa

Verwenden:

implode('-', array_reverse(explode('-', $date)));

Ohne den Aufwand für die Datumskonvertierung bin ich mir nicht sicher, ob es wichtig ist.

69
Tim Lytle
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","$3-$2-$1",$originalDate);

Dieser Code funktioniert für jedes Datumsformat.

Sie können die Reihenfolge der Ersetzungsvariablen wie $ 3- $ 1- $ 2 aufgrund Ihres alten Datumsformats ändern.

33
Alper Sarı

Auch eine andere obskure Möglichkeit:

$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];

Ich weiß nicht, ob ich es aber trotzdem nutzen würde :)

26
Gabriel
$timestamp = strtotime(your date variable); 
$new_date = date('d-m-Y', $timestamp);

Weitere Informationen finden Sie in der Dokumentation für strtotime .

Oder noch kürzer:

$new_date = date('d-m-Y', strtotime(your date variable));
26
Kevin

Hinweis : Da die Antwort dieses Posts manchmal positiv bewertet wird, bin ich hierher zurückgekehrt, um die Leute freundlich zu bitten, dies nicht zu tun stimme es nicht mehr zu. Meine Antwort ist uralt, technisch nicht korrekt, und hier gibt es mehrere bessere Ansätze. Ich behalte es hier nur für historische Zwecke.

Obwohl die Dokumentation die Funktion strtotime nur unzureichend beschreibt, hat @rjmunro das Problem in seinem Kommentar korrekt behandelt: Es ist im ISO-Format mit dem Datum "JJJJ-MM-TT".

Auch wenn meine Date_Converter-Funktion möglicherweise noch funktioniert, möchte ich Sie warnen, dass die folgenden Anweisungen möglicherweise ungenau sind. Ignorieren Sie sie daher bitte.

Die am häufigsten gewählte Antwort ist tatsächlich falsch!

Das PHP strtotime manual here gibt an, dass "die Funktion erwartet, eine Zeichenfolge zu erhalten, die ein englisches Datumsformat enthält". Tatsächlich bedeutet dies, dass ein amerikanisches US-amerikanisches Datumsformat wie "m-d-Y" oder "m/d/Y" erwartet wird.

Das bedeutet, dass ein als "Y-m-d" angegebenes Datum möglicherweise von strtotime falsch interpretiert wird. Sie sollten das Datum im erwarteten Format angeben.

Ich habe eine kleine Funktion geschrieben, um Daten in verschiedenen Formaten zurückzugeben. Nach Belieben verwenden und ändern. Wenn jemand daraus eine Klasse macht, wäre ich froh, wenn das geteilt würde.

function Date_Converter($date, $locale = "br") {

    # Exception
    if (is_null($date))
        $date = date("m/d/Y H:i:s");

    # Let's go ahead and get a string date in case we've
    # been given a Unix Time Stamp
    if ($locale == "unix")
        $date = date("m/d/Y H:i:s", $date);

    # Separate Date from Time
    $date = explode(" ", $date);

    if ($locale == "br") {
        # Separate d/m/Y from Date
        $date[0] = explode("/", $date[0]);
        # Rearrange Date into m/d/Y
        $date[0] = $date[0][1] . "/" . $date[0][0] . "/" . $date[0][2];
    }

    # Return date in all formats
        # US
        $Return["datetime"]["us"] = implode(" ", $date);
        $Return["date"]["us"]     = $date[0];

        # Universal
        $Return["time"]           = $date[1];
        $Return["unix_datetime"]  = strtotime($Return["datetime"]["us"]);
        $Return["unix_date"]      = strtotime($Return["date"]["us"]);
        $Return["getdate"]        = getdate($Return["unix_datetime"]);

        # BR
        $Return["datetime"]["br"] = date("d/m/Y H:i:s", $Return["unix_datetime"]);
        $Return["date"]["br"]     = date("d/m/Y", $Return["unix_date"]);

    # Return
    return $Return;

} # End Function
17
Igor Donin

Es gibt zwei Möglichkeiten, dies zu implementieren:

1.

    $date = strtotime(date);
    $new_date = date('d-m-Y', $date);

2.

    $cls_date = new DateTime($date);
    echo $cls_date->format('d-m-Y');
14
Raja Ram T

Sie können die Funktion strftime() ausprobieren. Einfaches Beispiel: strftime($time, '%d %m %Y');

9
Sinan

Verwenden Sie diese Funktion, um von einem beliebigen Format in ein beliebiges Format zu konvertieren

function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Y-m-d') {
    $date_aux = date_create_from_format($from_format, $date);
    return date_format($date_aux,$to_format);
}
8
Juancho Ramone

Im Folgenden wird PHP Code zum Generieren des morgigen Datums mit mktime() angegeben. Ändern Sie das Format in TT/MM/JJJJ und drucken Sie es dann mit echo aus.

$tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y"));
echo date("d", $tomorrow) . "/" . date("m", $tomorrow). "/" . date("Y", $tomorrow);
7
Vishnu
date('m/d/Y h:i:s a',strtotime($val['EventDateTime']));
5
AbdulBasit

Für diese spezielle Konvertierung können wir auch einen Formatstring verwenden.

$new = vsprintf('%3$s-%2$s-%1$s', explode('-', $old));

Natürlich funktioniert dies nicht für viele andere Datumsformatkonvertierungen, aber da wir in diesem Fall nur Teilzeichenfolgen neu anordnen, ist dies eine andere Möglichkeit, dies zu tun.

0
Don't Panic

Einfacher Weg Verwenden Sie strtotime() und date():

$original_dateTime = "2019-05-11 17:02:07"; #This may be database datetime
$newDate = date("d-m-Y", strtotime($original_dateTime));

Mit der Zeit

$newDate = date("d-m-Y h:i:s a", strtotime($original_dateTime));
0
Sani Kamal