programing

PHP DateTime __construct() 위치 x에서 시간 문자열(xxxxxxxx)을 구문 분석하지 못했습니다.

skycolor 2023. 8. 5. 10:02
반응형

PHP DateTime __construct() 위치 x에서 시간 문자열(xxxxxxxx)을 구문 분석하지 못했습니다.

타임스탬프를 사용하여 새 DateTime 개체를 만들 때 다음 구성 오류가 발생했습니다.

예외:날짜 시간::_construct(): 위치 8(8)에서 시간 문자열(1372622987)을 구문 분석하지 못했습니다. DateTime->_construct()에 예기치 않은 문자가 있습니다.

개체 생성 코드는 다음과 같습니다.

$start_date = new DateTime( "@{$dbResult->db_timestamp}" );

여기서 $dbResult->db_timestamp는 데이터베이스에서 가져온 유효한 유닉스 타임스탬프입니다.문제의 타임스탬프는 다음과 같습니다.

1372622987

잘못된 형식이 전달된 경우 이 오류를 이해하겠지만, 이는 실제 타임스탬프입니다.

이것이 매우 이상한 이유:그 후 스크립트를 실행하여 하드 코드 값으로 전달된 타임스탬프로 새 DateTime 개체를 생성했는데 오류가 보고되지 않았습니다.

이번 일은 우연인 것 같은데, 이런 일이 다시 발생할 여유가 없어서 혹시 있다면 설명이 필요합니다.

하드코드를 사용하는 경우 setTimestamp를 대신 사용해야 합니다.

$start_date = new DateTime();
$start_date->setTimestamp(1372622987);

당신의 경우에는

$start_date = new DateTime();
$start_date->setTimestamp($dbResult->db_timestamp);

사용createFromFormat방법:

$start_date = DateTime::createFromFormat("U", $dbResult->db_timestamp);

갱신하다

저는 이제 카본의 사용을 추천합니다.

코드를 이것으로 변경합니다.

$start_date = new DateTime( "@" . $dbResult->db_timestamp );

그리고 그것은 잘 작동할 것입니다.

이것은 저에게 효과가 있었습니다.

   /**
     * return date in specific format, given a timestamp.
     *
     * @param  timestamp  $datetime
     * @return string
     */
    public static function showDateString($timestamp)
    {
      if ($timestamp !== NULL) {
        $date = new DateTime();
        $date->setTimestamp(intval($timestamp));
        return $date->format("d-m-Y");
      }
      return '';
    }
$start_date = new DateTime();
$start_date->setTimestamp($dbResult->db_timestamp);

언급URL : https://stackoverflow.com/questions/17427503/php-datetime-construct-failed-to-parse-time-string-xxxxxxxx-at-position-x

반응형