>  기사  >  데이터 베이스  >  URL에서 dd/mm/yyyy 날짜를 변환할 때 내 PHP 코드가 1970-01-01을 반환하는 이유는 무엇입니까?

URL에서 dd/mm/yyyy 날짜를 변환할 때 내 PHP 코드가 1970-01-01을 반환하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-06 04:26:021044검색

Why Does My PHP Code Return 1970-01-01 When Converting dd/mm/yyyy Dates in URLs?

URL의 날짜를 dd/mm/yyyy에서 YYYY-MM-DD로 변환

PHP에서는 날짜를 다음 형식으로 변환하려고 시도하는 코드를 제공했습니다. dd/mm/yyyy를 YYYY-MM-DD 형식으로 바꿉니다. 그러나 변환 시 예기치 않은 값인 1970-01-01이 반환되는 문제가 발생했습니다.

strtotime() 문제

문제는 PHP strtotime( ) 기능. dd/mm/yyyy 형식의 날짜를 구문 분석할 때 strtotime()은 처음 두 자리가 월(mm)을 나타내고 다음 두 자리가 일(dd)을 나타내는 것으로 가정합니다. 예를 들어 2000년 2월 20일은 2000년 2월 20일로 해석됩니다.

그러나 귀하의 경우 URL의 날짜는 일/월/년 형식(dd/mm/yyyy)입니다. . 즉, 처음 두 자리는 일을 나타내고 다음 두 자리는 월을 나타냅니다. 결과적으로 strtotime()은 날짜를 잘못 해석하여 잘못된 값을 반환합니다.

DateTime::createFromFormat()을 사용한 솔루션

이 문제를 해결하려면 DateTime::을 사용하는 것이 좋습니다. strtotime() 대신 createFromFormat() 메서드를 사용하세요. 이 방법을 사용하면 날짜 문자열의 정확한 형식을 지정하여 올바르게 구문 분석되도록 할 수 있습니다. 업데이트된 코드 버전은 다음과 같습니다.

<code class="php">$date = $date1 = DateTime::createFromFormat('d/m/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20</code>

DateTime::createFromFormat()을 사용하면 URL의 날짜를 YYYY-MM-DD 형식으로 정확하게 변환할 수 있습니다.

추가 고려 사항

향후 유사한 문제를 방지하려면 URL의 날짜 형식을 올바르게 지정하는 것이 중요합니다. dd/mm/yyyy 형식으로 날짜를 전달하는 경우 처음 두 자리는 일을 나타내고 다음 두 자리는 월을 나타내는지 확인하십시오. 또는 YYYY-MM-DD와 같이 보다 표준화된 형식을 사용하는 것이 좋습니다.

위 내용은 URL에서 dd/mm/yyyy 날짜를 변환할 때 내 PHP 코드가 1970-01-01을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.