PHPでは、時間を取得することは開発において非常に一般的な要件です。 getTimeOfDay()およびdate()関数は、時間を処理するために使用される一般的な関数ですが、目的と戻りの結果は異なります。この記事では、getTimeOfDay()とdate()を組み合わせて、カスタム形式でタイム文字列を取得する方法について説明します。
GetTimeOfDay()関数は、秒数とマイクロ秒を含む、現在の時間の詳細情報を返します。その返品値は連想配列であり、一般的なフィールドは次のとおりです。
SEC :UNIX ERA以来の秒数(1970-01-01 00:00:00 UTC)
USEC :現在の秒のマイクロ秒数
例:
<?php
$time = gettimeofday();
print_r($time);
?>
出力は似ています:
Array
(
[sec] => 1621766783
[usec] => 123456
[minuteswest] => 480
[dsttime] => 0
)
日付()は、PHPで時間をフォーマットするための主な関数です。 2つのパラメーターを受け取ります。
フォーマット文字列( YMD H:I:Sなど)
オプションのタイムスタンプ(秒)
例:
<?php
echo date('Y-m-d H:i:s'); // 現在の出力時刻,例えば 2021-05-23 15:19:43
?>
date()は秒のみを処理でき、マイクロ秒を表示できません。 GetTimeOfday()からマイクロ秒を取得し、その後、 date()でフォーマットされた秒数と組み合わせて、マイクロ秒の時間文字列を取得できます。
サンプルコード:
<?php
$time = gettimeofday();
$seconds = $time['sec'];
$microseconds = $time['usec'];
// 2番目の部分をフォーマットします
$formatted_time = date('Y-m-d H:i:s', $seconds);
// スプライシングマイクロ秒パーツ,ASのフォーマット6少し,不十分な補償0
$micro_str = str_pad($microseconds, 6, '0', STR_PAD_LEFT);
// 最後の時間文字列,次のような形式:2021-05-23 15:19:43.123456
echo $formatted_time . '.' . $micro_str;
?>
プロジェクトでの複数の使用を容易にするために、上記のコードを関数にカプセル化できます。
<?php
function getFormattedMicrotime($format = 'Y-m-d H:i:s') {
$time = gettimeofday();
$seconds = $time['sec'];
$microseconds = $time['usec'];
$formatted_time = date($format, $seconds);
$micro_str = str_pad($microseconds, 6, '0', STR_PAD_LEFT);
return $formatted_time . '.' . $micro_str;
}
// 使用の例
echo getFormattedMicrotime(); // デフォルト形式
echo "\n";
echo getFormattedMicrotime('Y/m/d H:i:s'); // カスタム形式
?>
この例を介して、PHPのgetTimeOfday()とdate()を簡単に組み合わせて、マイクロ秒でカスタム形式の時間出力を実現できます。これは、特にログ、パフォーマンスの監視、その他のシナリオに適した、より洗練された時間のニーズを満たすことができます。
PHP時間関数の使用の詳細については、 gitbox.net/ php-date-functionを参照できます。