182

私は解決策を求めて StackExchange でたくさん検索しましたが、私が必要としているものは何もありません。JavaScript では、1970 年 1 月 1 日以降の UTC 時間を計算するために以下を使用しています。

function UtcNow() {
    var now = new Date();
    var utc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());
    return utc;
}

同等の Python コードは何でしょうか?

4

8 に答える 8

250

datetime.utcnow()を使用する次のコードを試してください。

from datetime import datetime
datetime.utcnow()

2 つの日付の間に費やされた時間を計算する必要がある場合は、終了日と開始日を差し引くだけで済みます。このような減算の結果はtimedelta オブジェクトです。

Python ドキュメントから:

class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

これは、デフォルトで、定義に記載されているフィールド (日、秒、マイクロ秒、ミリ秒、分、時間、週) のいずれかを取得できることを意味します。また、timedelta インスタンスには、次の total_seconds() メソッドがあります。

デュレーションに含まれる合計秒数を返します。(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10* 6) / 10 *6 は真の除算を有効にして計算したものと同等です。

于 2013-04-11T03:35:52.180 に答える
47

元のフォームに最も近い形式で:

import datetime

def UtcNow():
    now = datetime.datetime.utcnow()
    return now

ネイティブの Python ではなく 1970-01-01 からの秒数を知る必要がある場合は、datetime代わりにこれを使用します。

return (now - datetime.datetime(1970, 1, 1)).total_seconds()

Python には、Javascript で慣れ親しんだものとは異なる命名規則があります。 PEP 8を参照してください。また、単純に別の関数の結果を返す関数はかなりばかげています。よりアクセスしやすくするだけの問題である場合は、関数に別の名前を割り当てるだけで関数に別の名前を付けることができます。上記の最初の例は、次のように置き換えることができます。

utc_now = datetime.datetime.utcnow
于 2013-04-11T03:36:09.493 に答える
23
import datetime
import pytz

# datetime object with timezone awareness:
datetime.datetime.now(tz=pytz.utc)

# seconds from epoch:
datetime.datetime.now(tz=pytz.utc).timestamp() 

# ms from epoch:
int(datetime.datetime.now(tz=pytz.utc).timestamp() * 1000) 
于 2018-09-03T08:56:59.237 に答える