Konwertuj format daty RRRR-mm-dd => dd-mm-RRRR [duplikat]
To pytanie ma już odpowiedź tutaj:
- Konwertuj jeden format daty na inny w PHP 14 odpowiedzi
Próbuję przekonwertować datę z RRRR-mm-dd na dd-mm-RRRR (ale nie w SQL); jednak nie wiem, jak funkcja daty wymaga znacznika czasu, i nie mogę uzyskać znacznika czasu z tego ciągu.
Jak to możliwe?
12 answers
Użycie strtotime()
i date()
:
$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));
(Zobacz strtotime i date dokumenty na stronie PHP).
Edit : zauważ, że było to szybkie rozwiązanie pierwotnego pytania. W przypadku bardziej rozbudowanych konwersji, naprawdę powinieneś używać DateTime
klasa do parsowania i formatowania: -)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-11 12:25:07
Jeśli chcesz uniknąć konwersji strtotime (na przykład strtotime nie jest w stanie przetworzyć danych wejściowych) możesz użyć,
$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('d-m-Y');
Lub równoważnie:
$newDateString = date_format(date_create_from_format('Y-m-d', $dateString), 'd-m-Y');
Najpierw nadajesz mu format $dateString. Następnie mówisz mu format, w którym chcesz mieć $newDateString.
Lub jeśli format źródłowy zawsze jest "Y-m-D" (yyyy-mm-dd), po prostu użyj 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
?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-25 06:42:21
implode('-', array_reverse(explode('-', $date)));
Bez przeliczania dat, Nie wiem, czy to ma znaczenie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-21 18:23:15
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","$3-$2-$1",$originalDate);
Ten kod działa dla każdego formatu daty.
Możesz zmienić kolejność zmiennych zastępczych, takich jak $3 - $1 - $2 ze względu na stary format daty.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-20 08:10:20
$timestamp = strtotime(your date variable);
$new_date = date('d-m-Y', $timestamp);
Więcej:
Kliknij tutaj
Lub jeszcze krócej:
$new_date = date('d-m-Y', strtotime(your date variable));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-03 11:02:09
Również inna niejasna możliwość:
$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];
Nie wiem czy bym z niego skorzystał ale i tak:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-05 07:53:26
Edit: ponieważ odpowiedź na ten post czasami się podnosi, wróciłem uprzejmie proszę ludzi, żeby już tego nie popierali. Moja odpowiedź brzmi: starożytne, nie poprawne technicznie, a jest kilka lepszych zbliża się tutaj. Trzymam go tylko dla historycznych cele.
Chociaż dokumentacja źle opisuje funkcję strtotime, @rjmunro poprawnie poruszył ten problem w komentarzu: jest w ISO format daty "RRRR-MM-DD".
Także, nawet chociaż moja funkcja Date_Converter może nadal działać, chciałbym ostrzec, że poniżej mogą być nieprecyzyjne stwierdzenia, więc proszę nie lekceważ ich.
najczęściej głosowana odpowiedź jest nieprawidłowa!
Instrukcja PHP strtotime tutaj stwierdza, że "funkcja oczekuje, że otrzyma łańcuch zawierający angielski format daty". w rzeczywistości oznacza to, że oczekuje amerykańskiego formatu daty, takiego jak" m-d-Y " lub "m / d / Y".
Oznacza to, że data podana jako "Y-m-d" może zostać błędnie zinterpretowana przez strtotime. Należy podać datę w oczekiwanym formacie.
Napisałem małą funkcję zwracającą daty w kilku formatach. Używać i modyfikować zgodnie z wolą. jeśli ktoś zmieni to w klasę, byłbym zadowolony, gdyby to było dzielone.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-24 13:41:48
Dwa sposoby realizacji tego
1)
$date = strtotime(date);
$new_date = date('d-m-Y', $date);
2)
$cls_date = new DateTime($date);
echo $cls_date->format('d-m-Y');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-20 06:49:17
Możesz spróbować strftime
funkcja. Coś jak strftime($time, '%d %m %Y');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-23 06:51:30
Użyj tej funkcji do konwersji z dowolnego formatu na dowolny format
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);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-29 21:22:07
Poniżej podany jest kod PHP do wygenerowania jutrzejszej daty za pomocą mktime()
i zmiany jej formatu na dd / mm / RRRR, a następnie wydruku za pomocą echo
.
$tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y"));
echo date("d", $tomorrow) . "/" . date("m", $tomorrow). "/" . date("Y", $tomorrow);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-02 10:53:46
date('m/d/Y h:i:s a',strtotime($val['EventDateTime']));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-23 06:51:48