Programming

PHP에서 날짜 형식 변환

procodes 2020. 2. 15. 23:28
반응형

PHP에서 날짜 형식 변환


날짜를 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
?>

사용하다:

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

날짜 변환 오버 헤드가 없으면 크게 중요하지 않습니다.


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

이 코드는 모든 날짜 형식에 적용됩니다.

이전 날짜 형식으로 인해 $ 3- $ 1- $ 2와 같은 대체 변수의 순서를 변경할 수 있습니다.


또 다른 모호한 가능성 :

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

나는 그것을 사용할지 모르겠지만 여전히 :)


$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

이를 구현하는 두 가지 방법이 있습니다.

1.

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

2.

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

당신은 strftime()기능을 시도 할 수 있습니다 . 간단한 예 :strftime($time, '%d %m %Y');


이 기능을 사용하여 모든 형식에서 모든 형식으로 변환

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

아래는 PHP 코드를 사용하여 내일 날짜를 생성 mktime()하고 형식을 dd / mm / yyyy 형식 으로 변경 한 다음를 사용하여 인쇄하는 PHP 코드 echo입니다.

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

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

이 특정 변환을 위해 형식 문자열을 사용할 수도 있습니다.

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

분명히 이것은 다른 많은 날짜 형식 변환에는 작동하지 않지만이 경우 하위 문자열을 다시 정렬하기 때문에 가능한 또 다른 방법입니다.


간단한 방법 사용 strtotime()date():

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

시간과 함께

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

date () 및 strtotime ()을 사용하여 형식을 변경할 수 있습니다.

$ date = '9/18/2019';

에코 날짜 ( 'dm-y', strtotime ($ date));

결과:

18-09-19

(dmy)를 변경하여 형식을 변경할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/2487921/convert-a-date-format-in-php



반응형