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
'programing' 카테고리의 다른 글
XML 그리기 가능을 사용한 수직선 (0) | 2023.08.05 |
---|---|
Docker 바탕 화면에서 데이터 볼륨 찾기(Windows) (0) | 2023.08.05 |
rest 컨트롤러에 대해서만 기본 URL을 변경하는 방법은 무엇입니까? (0) | 2023.08.05 |
npm을 사용하여 "devDependencies"만 설치하는 방법 (0) | 2023.08.05 |
javax 유효성 검사 제약 조건이 Spring Boot에서 작동하지 않음 (0) | 2023.08.05 |