21

strtotime()PHPで指定されたJavaScriptで同じ日時秒値を取得しています。しかし、JavaScript で同じ値が必要です。

PHP コード

echo strtotime("2011-01-26 13:51:50");
// 1296046310

JavaScript コード

var d = Date.parse("2011-01-26 13:51:50");
console.log(d);
// 1296030110000
4

3 に答える 3

26

健全な比較のために、同じタイムゾーンを使用する必要があります。

echo strtotime("2011-01-26 13:51:50 GMT");
// 1296049910

var d = Date.parse("2011-01-26 13:51:50 GMT") / 1000;
console.log(d);
// 1296049910

アップデート

標準によると、RFC 2822 形式の日付のみが適切にサポートされています。

Date.parse("Wed, 26 Jan 2011 13:51:50 +0000") / 1000

このような日付を生成するにはgmdate('r')、PHPで次を使用できます。

echo gmdate('r', 1296049910);
于 2013-02-14T05:00:17.157 に答える
5

JavaScript はタイムスタンプとしてミリ秒を使用しますが、PHP は秒を使用します。その結果、1000 倍ずれているため、非常に異なる日付が得られます。

サンプル

echo date('Y-m-d', TIMESTAMP / 1000);

コメント応答

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    function toTimestamp(year,month,day,hour,minute,second)
    {
        var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second));
        return datum.getTime()/1000;
    }

    $(function()
    {
        console.log(toTimestamp(2011,01,26,13,51,50));

    });

</script>

<?php

echo $the_date = strtotime("2011-01-26 13:51:50");
于 2013-02-14T05:04:11.813 に答える
3

strtotime()そして、Date.parse()それぞれ秒単位とミリ秒単位の分解能で UNIX タイムスタンプを生成します。ただし、入力文字列にタイムゾーン情報がない場合は、現地時間が想定されます。そのため、両方のマシンでタイムスタンプを生成するために PHP (または JavaScript) が使用されている場合でも、入力文字列2011-01-26T13:51:50は異なるマシンで異なる出力を生成する可能性があります。

解決策は、文字列でタイムゾーンを明示的に指定することです。これにより、どのマシンでも同じ結果が得られるはずです。

Date.parse("Jan 26, 2011 13:51:50 GMT+0500") / 1000; // 1296031910
strtotime("Jan 26, 2011 13:51:50 GMT+0500");         // 1296031910
于 2013-02-14T09:35:58.753 に答える