날짜를에서로 변환하려고 yyyy-mm-dd
합니다.dd-mm-yyyy
(SQL이 아닌) . 그러나 날짜 함수에 타임 스탬프가 어떻게 필요한지 알지 못하고이 문자열에서 타임 스탬프를 얻을 수 없습니다.
이것이 어떻게 가능한지?
날짜를에서로 변환하려고 yyyy-mm-dd
합니다.dd-mm-yyyy
(SQL이 아닌) . 그러나 날짜 함수에 타임 스탬프가 어떻게 필요한지 알지 못하고이 문자열에서 타임 스탬프를 얻을 수 없습니다.
이것이 어떻게 가능한지?
답변:
사용 strtotime()
및 date()
:
$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));
( PHP 사이트 의 strtotime 및 날짜 문서를 참조하십시오 .)
이것은 원래 질문에 대한 빠른 해결책이었습니다. 더 광범위한 변환을 위해서는 DateTime
클래스를 사용하여 구문 분석하고 형식을 지정해야합니다 :-)
strtotime 변환을 피하려면 (예 : strtotime이 입력을 구문 분석 할 수 없음) 사용할 수 있습니다.
$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('d-m-Y');
또는 동등하게 :
$newDateString = date_format(date_create_from_format('Y-m-d', $dateString), 'd-m-Y');
먼저 $ dateString의 형식을 지정합니다. 그런 다음 $ newDateString을 원하는 형식으로 지정합니다.
또는 소스 형식이 항상 "Ymd"(yyyy-mm-dd)이면 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
?>
DateTime::createFromFormat()
-그것은 실제로보다 유용합니다strtotime()
strtotime()
트루 타입 형식 (Ymd)을 다른 형식으로 변환하는 데 유용 하지만 DateTime::createFromFormat()
보편적입니다. 그것은 STR_TO_DATE
MySQL 과 같습니다
strtotime()
사용하다:
implode('-', array_reverse(explode('-', $date)));
날짜 변환 오버 헤드가 없으면 크게 중요하지 않습니다.
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","$3-$2-$1",$originalDate);
이 코드는 모든 날짜 형식에 적용됩니다.
이전 날짜 형식으로 인해 $ 3- $ 1- $ 2와 같은 대체 변수의 순서를 변경할 수 있습니다.
$timestamp = strtotime(your date variable);
$new_date = date('d-m-Y', $timestamp);
자세한 내용은의 설명서를strtotime
참조하십시오 .
또는 더 짧습니다.
$new_date = date('d-m-Y', strtotime(your date variable));
참고 :이 게시물의 답변이 때로는 투표를 받기 때문에 사람들이 더 이상 투표하지 않도록 친절하게 요청했습니다. 내 대답은 고대이며 기술적으로 정확하지 않으며 여기에 몇 가지 더 나은 접근법이 있습니다. 역사적인 목적으로 만 여기에 보관하고 있습니다.
이 문서는 strtotime 함수를 잘 설명하지 않았지만 @rjmunro는 그의 의견에서이 문제를 올바르게 해결했습니다. ISO 형식 날짜는 "YYYY-MM-DD"입니다.
또한 Date_Converter 함수가 여전히 작동하더라도 아래에 부정확 한 진술이있을 수 있음을 경고하고 싶습니다. 무시하십시오.
가장 투표 된 답변이 실제로 잘못되었습니다!
는 PHP strtotime으로 매뉴얼은 여기 "함수 예상하는이 영어 날짜 형식을 포함하는 문자열을 제공 할"고 주장한다. 실제로 의미하는 것은 "mdY"또는 "m / d / Y"와 같은 미국식 미국 날짜 형식을 예상한다는 것입니다.
이는 "Ymd"로 제공된 날짜가 다음과 같이 잘못 해석 될 수 있음을 의미합니다. 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
당신은 strftime()
기능을 시도 할 수 있습니다 . 간단한 예 :strftime($time, '%d %m %Y');
date('m/d/Y h:i:s a',strtotime($val['EventDateTime']));
이 특정 변환을 위해 형식 문자열을 사용할 수도 있습니다.
$new = vsprintf('%3$s-%2$s-%1$s', explode('-', $old));
분명히 이것은 다른 많은 날짜 형식 변환에는 작동하지 않지만이 경우 하위 문자열을 다시 정렬하기 때문에 가능한 또 다른 방법입니다.
strtotime()
. :-)
function dateFormat($date) {
$m = preg_replace('/[^0-9]/', '', $date);
if (preg_match_all('/\d{2}+/', $m, $r)) {
$r = reset($r);
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
}
}
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