日付をミリ秒から m-d-Y H:i:s.u にフォーマットすると、マイクロ秒フィールドに 000000 が表示されるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-10-23 19:52:30
オリジナル
512 人が閲覧しました

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 エポックからの秒数
  • u: マイクロ秒

タイムゾーンと microtime()

createFromFormat() メソッドは、明示的に指定されていない場合、通常、ローカル タイム ゾーンを使用します。ただし、microtime() は Unix エポックからの経過秒数を 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!