복붙노트

문자열을 Date 및 DateTime으로 변환

PHP

문자열을 Date 및 DateTime으로 변환

mm-dd-YYYY (예 : 10-16-2003) 형식의 PHP 문자열이있는 경우이를 YYYY-mm-dd 형식으로 Date 및 DateTime으로 올바르게 변환하는 방법은 무엇입니까? 내가 Date와 DateTime을 모두 묻는 유일한 이유는 하나의 자리에서 하나, 다른 지점에서 다른 하나를 필요로하기 때문입니다.

해결법

  1. ==============================

    1.첫 번째 날짜에 strtotime ()을 사용하고 date ( 'Y-m-d')를 사용하여 다시 변환하십시오.

    첫 번째 날짜에 strtotime ()을 사용하고 date ( 'Y-m-d')를 사용하여 다시 변환하십시오.

    $time = strtotime('10/16/2003');
    
    $newformat = date('Y-m-d',$time);
    
    echo $newformat;
    // 2003-10-16
    

    strtotime () 함수에서 슬래시 (/)와 하이픈 (-)을 사용하는 것의 차이점을주의하십시오. php.net에서 인용하기 :

  2. ==============================

    2.m / d / Y 및 m-d-Y 형식은 신중해야합니다. PHP는 /를 m / d / Y로 간주하고 -는 d-m-Y를 의미하는 것으로 간주합니다. 이 경우 입력 형식을 명시 적으로 설명합니다.

    m / d / Y 및 m-d-Y 형식은 신중해야합니다. PHP는 /를 m / d / Y로 간주하고 -는 d-m-Y를 의미하는 것으로 간주합니다. 이 경우 입력 형식을 명시 적으로 설명합니다.

    $ymd = DateTime::createFromFormat('m-d-Y', '10-16-2003')->format('Y-m-d');
    

    그런 식으로 당신은 어떤 해석의 변덕에 처하지 않습니다.

  3. ==============================

    3.날짜를 파싱하려면 다음을 사용해야합니다.     DateTime :: createFromFormat ();

    날짜를 파싱하려면 다음을 사용해야합니다.     DateTime :: createFromFormat ();

    전의:

    $dateDE = "16/10/2013";
    $dateUS = \DateTime::createFromFormat("d.m.Y", $dateDE)->format("m/d/Y");
    

    그러나 다음과 같이 충돌 할 수 있으므로주의하십시오.

    PHP Fatal error: Call to a member function format() on a non-object 
    

    실제로 포맷이 제대로되었는지 확인해야합니다.

    $dateDE = "16/10/2013";
    $dateObj = \DateTime::createFromFormat("d.m.Y", $dateDE);
    if (!$dateObj)
    {
        throw new \UnexpectedValueException("Could not parse the date: $date");
    }
    $dateUS = $dateObj->format("m/d/Y");
    

    이제 충돌하는 대신 예외를 잡아 내고 전파 할 수 있습니다.

    $ dateDE 형식이 잘못되었습니다. "16.10.2013"이어야합니다;

  4. ==============================

    4.

    $d = new DateTime('10-16-2003');
    
    $timestamp = $d->getTimestamp(); // Unix timestamp
    $formatted_date = $d->format('Y-m-d'); // 2003-10-16
    

    편집 : DateTimeZone을 DateTime () 생성자에 전달하여 서버 기본 시간대가 아닌 원하는 시간대의 날짜를 만들 수 있습니다.

  5. ==============================

    5.PHP 5.2 이상을 사용하는 경우 위에 언급 한대로 DateTime을 사용하십시오. 이 기사가 도움이 될 것입니다.

    PHP 5.2 이상을 사용하는 경우 위에 언급 한대로 DateTime을 사용하십시오. 이 기사가 도움이 될 것입니다.

  6. ==============================

    6.첫 번째 날짜

    첫 번째 날짜

    $_firstDate = date("m-d-Y", strtotime($_yourDateString));
    

    새 날짜

    $_newDate = date("Y-m-d",strtotime($_yourDateString));
    
  7. ==============================

    7.형식이 dd-mm-yyyy 인 경우 PHP에서 예상대로 작동하지 않습니다. PHP 문서에는 아래 지침이 있습니다.

    형식이 dd-mm-yyyy 인 경우 PHP에서 예상대로 작동하지 않습니다. PHP 문서에는 아래 지침이 있습니다.

    따라서 원하는대로 사용할 수 없습니다. 이 때 dd / mm / yyyy 형식을 사용하려고하면 FALSE가 제거됩니다. 다음과 같이 조정할 수 있습니다.

    $date = "23/02/2013";
    $timestamp = strtotime($date);
    if ($timestamp === FALSE) {
      $timestamp = strtotime(str_replace('/', '-', $date));
    }
    echo $timestamp; // prints 1361577600
    
  8. from https://stackoverflow.com/questions/6238992/converting-string-to-date-and-datetime by cc-by-sa and MIT license