Converteer een datumformaat in PHP

Ik probeer een datum te converteren van yyyy-mm-ddnaar dd-mm-yyyy(maar niet in SQL); Ik weet echter niet hoe de datumfunctie een tijdstempel vereist, en ik kan geen tijdstempel van deze reeks krijgen.

Hoe is dit mogelijk?


1, Autoriteit 100%

Gebruik strtotime()EN date():

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

(zie de strstotime en Datum documentatie op de PHP-site.)

Merk op dat dit een snelle oplossing was voor de oorspronkelijke vraag. Voor meer uitgebreide conversies, moet u echt de DateTimeKlasse om te ontleden en formatteren: -)


2, Autoriteit 26%

Als u de STRTOTIME-conversie wilt vermijden (bijvoorbeeld, kan Strtotime uw invoer niet parseren) U kunt gebruiken,

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

of, equivalent:

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

U geeft het eerst het formaat $ datestring is binnen. Dan vertel je het het formaat waar je $ NewDatestring wilt in.

of als het bronformaat altijd “YMD” is (YJJYY-MM-DD), gebruik dan gewoon 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
?>

Antwoord 3, autoriteit 7%

Gebruik:

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

Zonder de overhead voor datumconversie, weet ik niet zeker of het veel uitmaakt.


Antwoord 4, autoriteit 3%

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

Deze code werkt voor elke datumnotatie.

Je kunt de volgorde van vervangende variabelen zoals $ 3-$ 1-$ 2 wijzigen vanwege je oude datumnotatie.


Antwoord 5, autoriteit 3%

Ook een andere obscure mogelijkheid:

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

Ik weet niet of ik het zou gebruiken, maar toch 🙂


Antwoord 6, autoriteit 2%

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

Zie voor meer informatie de documentatie voor strtotime.

Of nog korter:

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

Antwoord 7

Opmerking: omdat het antwoord van dit bericht soms omhoog wordt gestemd, ben ik teruggekomen
hier om mensen vriendelijk te vragen er niet meer op te stemmen. Mijn antwoord is:
oud, technisch niet correct, en er zijn verschillende betere
hier nadert. Ik hou het hier alleen voor historisch
doeleinden.

Hoewel de documentatie de strtotime-functie slecht beschrijft,
@rjmunro heeft het probleem correct aangepakt in zijn opmerking: het staat in ISO
formaat datum “JJJJ-MM-DD”.

Ook al zou mijn Date_Converter-functie nog steeds werken, ik zou
graag waarschuwen dat er onnauwkeurige verklaringen hieronder kunnen staan, dus alstublieft
negeer ze.

Het meest gestemde antwoord is eigenlijk onjuist!

De PHP strtotime handleiding hierstelt dat “De functie verwacht om een string te geven met een Engels datumformaat”. Wat het eigenlijk betekent, is dat het een Amerikaans Amerikaans datumformaat verwacht, zoals “m-d-Y” of “m/d/Y”.

Dat betekent dat een datum die wordt opgegeven als “J-m-d” verkeerd kan worden geïnterpreteerd door strtotime. Geef de datum op in het verwachte formaat.

Ik heb een kleine functie geschreven om datums in verschillende formaten te retourneren. Gebruik en wijzig naar believen. Als iemand daar een les van maakt, zou ik het fijn vinden als dat zou worden gedeeld.

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

Antwoord 8

Er zijn twee manieren om dit te implementeren:

1.

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

2.

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

Antwoord 9

Gebruik deze functie om van elk formaat naar elk formaat te converteren

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);
}

Antwoord 10

Hieronder staat PHP-code om de datum van morgen te genereren met behulp van mktime()en de indeling te wijzigen in de indeling dd/mm/jjjjen deze vervolgens af te drukken met behulp van echo.

$tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y"));
echo date("d", $tomorrow) . "/" . date("m", $tomorrow). "/" . date("Y", $tomorrow);

Antwoord 11

date('m/d/Y h:i:s a',strtotime($val['EventDateTime']));

Antwoord 12

Voor deze specifieke conversie kunnen we ook een format string gebruiken.

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

Natuurlijk werkt dit niet voor veel andere conversies van datumnotaties, maar aangezien we in dit geval alleen substrings herschikken, is dit een andere mogelijke manier om het te doen.


Antwoord 13

Je kunt het formaat wijzigen met de date() en de strtotime().

$date = ’18-9-2019′;

echo date(‘d-m-y’,strtotime($date));

Resultaat:

18-09-19

We kunnen het formaat wijzigen door de ( d-m-y ).


Antwoord 14

Gebruik date_createen date_format

Probeer dit.

function formatDate($input, $output){
  $inputdate = date_create($input);
  $output = date_format($inputdate, $output);
  return $output;
}

Antwoord 15

In PHP kan elke datum worden geconverteerd naar het vereiste datumformaat met behulp van verschillende scenario’s, bijvoorbeeld om elk datumformaat te veranderen in
Dag, Datum Maand Jaar

$newdate = date("D, d M Y", strtotime($date));

De datum wordt weergegeven in het volgende zeer goede formaat

ma, 16 nov 2020


Antwoord 16

Eenvoudige manier Gebruik strtotime()en date():

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

Met de tijd

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

Antwoord 17

function dateFormat($date)
{
    $m = preg_replace('/[^0-9]/', '', $date);
    if (preg_match_all('/\d{2}+/', $m, $r)) {
        $r = reset($r);
        if (count($r) == 4) {
            if ($r[2] <= 12 && $r[3] <= 31) return "$r[0]$r[1]-$r[2]-$r[3]"; // Y-m-d
            if ($r[0] <= 31 && $r[1] != 0 && $r[1] <= 12) return "$r[2]$r[3]-$r[1]-$r[0]"; // d-m-Y
            if ($r[0] <= 12 && $r[1] <= 31) return "$r[2]$r[3]-$r[0]-$r[1]"; // m-d-Y
            if ($r[2] <= 31 && $r[3] <= 12) return "$r[0]$r[1]-$r[3]-$r[2]"; //Y-m-d
        }
        $y = $r[2] >= 0 && $r[2] <= date('y') ? date('y') . $r[2] : (date('y') - 1) . $r[2];
        if ($r[0] <= 31 && $r[1] != 0 && $r[1] <= 12) return "$y-$r[1]-$r[0]"; // d-m-y
    }
}
var_dump(dateFormat('31/01/00')); // return 2000-01-31
var_dump(dateFormat('31/01/2000')); // return 2000-01-31
var_dump(dateFormat('01-31-2000')); // return 2000-01-31
var_dump(dateFormat('2000-31-01')); // return 2000-01-31
var_dump(dateFormat('20003101')); // return 2000-01-31

Other episodes