-1

PHP 2012-08-16T21:14:03.447 のこの日時はどのような形式ですか? タイムスタンプに変換したり、その逆にするにはどうすればよいですか?

タイムスタンプ形式が1345108443790ありますが、日時を取得するにはどうすればよいですか?

反対票を投じた/閉じた人には、この質問をリクエストしてください:

(サードパーティのWebサイトからこの値を取得しました)DateTimeに変換しようとすると奇妙な結果が得られ1345108443790ましたが、多くの試行と@Truthの提案により、最後の3桁(マイクロ秒かもしれませんか?)をトリミングしてからそれを渡すとわかりました関数内で実際にそれを解決し、正しい結果を出しています。ここで学ぶべきこと、ワンクリックで反対票を投じてください!

4

3 に答える 3

2

これは ISO 8601 に似ています (ただしタイムゾーンはありません)、別名日付/時刻スタンプの標準です。

strtotime()正しく解析して使用します。DateTimeオブジェクトも考慮したい場合があります。

作業例:

$ts = strtotime("2012-08-16T21:14:03.447");
echo date("H:i:s Y-m-d", $ts);
于 2012-08-26T18:33:36.933 に答える
2

PHP 2012-08-16T21:14:03.447 のこの日時はどのような形式ですか?

この形式は、特に一般的に使用される例ではありませんが、 ISO 8601 国際標準でカバーされています。

余談ですが、(標準では) 秒の端数の前にドットではなくコンマを付けることが推奨されています。


タイムスタンプに変換したり、その逆にするにはどうすればよいですか?

通常のように、strtotime()またはDateTimeクラスで。

$subject = '2012-08-16T21:14:03.447';

echo date('r', strtotime($subject));
// or
$datetime = new DateTime($subject);
echo $datetime->format('r');

タイムスタンプ形式は 1345108443790 ですが、日時を取得するにはどうすればよいですか?

これはUnix 時間ですが、単位はミリ秒です。基本的な算術演算では、秒単位の Unix 時間が得られ、そこからフォーマットDateTimeを使用してオブジェクトを作成でき@1234567890ます。

$subject = 1345108443790;
$unixtime = (int) ($subject / 1000);

echo date('r', $unixtime);
// or
$datetime = new DateTime("@$unixtime");
echo $datetime->format('r');

ミリ秒の精度が必要な場合は、 を使用できますDateTime::createFromFormat()

$subject = 1345108443790;
$unixtime = (int) ($subject / 1000);
$millis   = $subject % 1000;

$datetime = DateTime::createFromFormat('U u', "$unixtime $millis");
echo $datetime->format('r u');
于 2012-08-26T19:54:58.570 に答える
1

v5.2.2以降、問題なくマイクロ秒を処理できるため、PHPのDateTimeオブジェクトを使用するという@Truthの推奨事項に同意します。

$dt = new DateTime('2012-08-16T21:14:03.447');
$timestamp = $dt->format('U.u');                  // 1345151643.447000
$timestrng = $dt->format('Y-m-d\TH:i:s.u');       // 2012-08-16T21:14:03.447000
于 2012-08-26T20:01:28.453 に答える