Примечание : так как ответ на этот пост иногда получает голосование, я вернулся
здесь, чтобы любезно попросить людей больше не высказываться. Мой ответ
древний, не технически правильный, и есть несколько лучше
подходит прямо здесь. Я держу это здесь только для исторического
цели.
Хотя документация плохо описывает функцию strtotime,
@rjmunro правильно обратился к проблеме в своем комментарии: это в ISO
формат даты "ГГГГ-ММ-ДД".
Кроме того, хотя моя функция Date_Converter все еще может работать, я бы
хотел бы предупредить, что ниже могут быть неточные утверждения, поэтому, пожалуйста,
игнорируй их.
Наиболее проголосовавший ответ на самом деле неверен!
Руководство PHP strtotime здесь гласит: «Функция ожидает получить строку, содержащую формат даты на английском языке». На самом деле это означает, что он ожидает американский формат даты в США, например, "m-d-Y" или "m / d / Y".
Это означает, что дата, указанная как "Y-m-d", может быть неправильно истолкована как strtotime
. Вы должны предоставить дату в ожидаемом формате.
Я написал небольшую функцию для возврата дат в нескольких форматах. Используйте и изменяйте по желанию. Если кто-нибудь превратит это в класс, я был бы рад, если бы этим поделились.
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