6

Python では、calendar.timegm() を使用して、UNIX タイムスタンプの 10 桁の結果を取得します。これを Javascript の setTime() 関数に入れると、1970 年の日付が表示されます。明らかに、13 桁の UNIX タイムスタンプが必要です。これはどのように起こりますか?どちらも同じ日付からカウントされますか?

これら 2 つの言語間で同じ UNIX タイムスタンプを使用するにはどうすればよいですか?

Python の場合:

In [60]: parseddate.utctimetuple()
Out[60]: (2009, 7, 17, 1, 21, 0, 4, 198, 0)
In [61]: calendar.timegm(parseddate.utctimetuple())
Out[61]: 1247793660

Firebug で:

>>> var d = new Date(); d.setTime(1247793660); d.toUTCString()
"Thu, 15 Jan 1970 10:36:55 GMT"
4

4 に答える 4

11

timegm は、1970 年 1 月 1 日からの秒数を返すUnix のgmtime()メソッドに基づいています。

Javascripts setTime()メソッドは、その日付からのミリ秒です。Javascript が期待する形式に変換するには、秒数に 1000 を掛ける必要があります。

于 2009-07-03T01:00:52.497 に答える
9

ここでは、javascript/datetime との間で変換するために使用する python メソッドをいくつか示します。

def to_datetime(js_timestamp):
    return  datetime.datetime.fromtimestamp(js_timestamp/1000)

def js_timestamp_from_datetime(dt):
    return 1000 * time.mktime(dt.timetuple())

JavaScript では、次のようにします。

var dt = new Date();
dt.setTime(js_timestamp);
于 2009-07-03T01:07:04.403 に答える
2

1970 年以降の秒数と 1970 年以降のミリ秒数を混同していませんか?

于 2009-07-03T00:59:42.173 に答える
1

JavaScriptのDate コンストラクターはミリ秒単位で動作するため、Python の UNIX 時間を 1000 倍する必要があります。

var unixTimestampSeg = 1247793660;
var date = new Date(unixTimestampSeg*1000);
于 2009-07-03T01:00:10.330 に答える