>백엔드 개발 >PHP 튜토리얼 >밀리초에서 m-d-Y H:i:s.u로 날짜 형식을 지정할 때 마이크로초 필드에 000000이 표시되는 이유는 무엇입니까?

밀리초에서 m-d-Y H:i:s.u로 날짜 형식을 지정할 때 마이크로초 필드에 000000이 표시되는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-23 19:52:30597검색

Why is the Microseconds Field Displaying 000000 When Formatting Dates in m-d-Y H:i:s.u from Milliseconds?

밀리초에서 m-d-Y H:i:s.u 날짜 형식 가져오기

이 쿼리의 목표는 "m-d-Y H:i: s.u"는 밀리초 단위로 제공되는 Unix 타임스탬프에서 가져온 것입니다. 그러나 결과의 마이크로초 필드에 계속 000000이 표시됩니다.

<code class="php">$milliseconds = 1375010774123;
$d = date("m-d-Y H:i:s.u", $milliseconds/1000);
print $d;</code>

출력:

07-28-2013 11:26:14.000000

해결책

이 문제를 해결하려면, 입력 형식 "U.u"를 사용할 수 있습니다:

<code class="php">$now = DateTime::createFromFormat('U.u', microtime(true));
echo $now->format("m-d-Y H:i:s.u");</code>

출력:

04-13-2015 05:56:22.082300

이 접근 방식은 PHP 설명서의 다음 형식 지정자를 활용합니다.

  • U: Unix Epoch 이후의 초
  • u: 마이크로초

시간대 및 마이크로타임()

createFromFormat() 메서드는 명시적으로 제공되지 않은 경우 일반적으로 현지 시간대를 사용합니다. 하지만 microtime()은 Unix Epoch 이후 경과된 초 수를 UTC로 반환하므로 DateTime 객체는 암시적으로 UTC로 초기화됩니다.

특정 시간대에 대한 시간을 표시해야 하는 경우 설정해야 합니다. 초기 DateTime 생성 후 setTimeZone() 사용:

<code class="php">$now->setTimeZone(new DateTimeZone('America/New_York'));</code>

MySQL에 입력

형식화된 날짜 문자열을 MySQL에 입력하려면 형식을 다음과 같이 수정해야 합니다.

<code class="php">format("Y-m-d H:i:s.u")</code>

위 내용은 밀리초에서 m-d-Y H:i:s.u로 날짜 형식을 지정할 때 마이크로초 필드에 000000이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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