반응형
DateTime::createFromFormat을 통해 '2016.04.30 PM 7:30'의 PHP DateTime 인스턴스를 만드는 데 적합한 형식은 무엇입니까?
저는 현재 워드프레스 프로젝트를 진행중입니다. 여기서 사용자 지정 게시물 메타데이터를 가져와 A로 변환해야 합니다.DateTime
예를 들어, 수학을 같이 합니다.
내가.echo
get_post_meta는 다음과 같습니다.
2016.04.30 오후 7:30
내가 사용하고 있는 포맷은DateTime
예는 다음과 같습니다.
Y.m.d Ag:i
하지만 그 수익은DateTime::createFromFormat
가false
.
// 2016.04.30 PM 7:30
$start_at = DateTime::createFromFormat( 'Y.m.d A g:i', get_post_meta(get_the_ID(), 'as_date', true));
if ($start_at === false) {
echo 'False format: ' . get_post_meta(get_the_ID(), 'as_date', true);
} else {
echo $start_at->getTimestamp();
}
결과는False format: 2016.04.30 PM 7:30
.
내가 뭘 놓치고 있는 거지?사소한 일인 것 같은데 연결이 안 되네요.
테스트를 해보니 형식의 문제문자가 'A'였습니다.그래서 주변을 뒤지다가 PHP에서 이 버그를 발견했습니다. (분명히 버그는 아닙니다!)
소스코드를 살펴보니 이미 1시간이 지나야 AM과 PM을 파싱할 것 같습니다.
아마도 AM/PM을 끝까지 이동하기 위해 정규식을 빠르게 통과하는 것이 최선의 방법일 것입니다.
$thedate = get_post_meta(get_the_ID(), 'as_date', true);
$thedate = preg_replace("/([0-9.]+) ([ap]m) ([0-9:]+)/i", "$1 $3 $2", $thedate);
$start_at = DateTime::createFromFormat('Y.m.d g:i A', $thedate);
날짜 형식을 변경한 후createFromFormat
$non_standard_format = '2016.04.30 PM 7:30';
$non_standard_format = str_replace('.','-',$non_standard_format);
$date_components = explode(" ",$non_standard_format);
$standard_format = $date_components[0]." ".$date_components[2]." ".$date_components[1];
그럼 이걸 전달해 보세요.DateTime::createFromFormat
$start_at = DateTime::createFromFormat( 'Y-m-d g:i A', $standard_format);
if ($start_at === false) {
echo 'False format: ' . get_post_meta(get_the_ID(), 'as_date', true);
} else {
echo $start_at->getTimestamp();
}
언급URL : https://stackoverflow.com/questions/36784568/whats-the-right-format-to-create-a-php-datetime-instance-of-2016-04-30-pm-730
반응형
'itsource' 카테고리의 다른 글
database-name에서 대시를 사용하여 bash를 통해 데이터베이스 생성 (0) | 2023.10.09 |
---|---|
Swift 함수의 비동기 호출에서 데이터 반환 (0) | 2023.10.09 |
dplyr: 열을 알파벳순으로 R 순서 지정 (0) | 2023.10.04 |
API에서 아이폰 IDFA를 검색하는 방법은? (0) | 2023.10.04 |
C++에서 파일을 디프하는 방법이 있습니까? (0) | 2023.10.04 |