16
//parses some string into that format.
datetime1 = datetime.strptime(somestring, "%Y-%m-%dT%H:%M:%S")

//gets the seconds from the above date.
timestamp1 = time.mktime(datetime1.timetuple())

//adds milliseconds to the above seconds.
timeInMillis = int(timestamp1) * 1000

(そのコードの任意の時点で) 日付を UTC 形式に変換するにはどうすればよいですか? 私は API を 1 世紀にもわたって調べてきましたが、機能するものを見つけることができません。誰でも助けることができますか?現在、私が信じている東部時間に変えています(ただし、私はGMTにいますが、UTCが必要です)。

編集:最終的に見つけたものに最も近い人に答えました。

datetime1 = datetime.strptime(somestring, someformat)
timeInSeconds = calendar.timegm(datetime1.utctimetuple())
timeInMillis = timeInSeconds * 1000

:)

4

4 に答える 4

17

datetime.utcfromtimestampおそらくあなたが探しているものです:

>>> timestamp1 = time.mktime(datetime.now().timetuple())
>>> timestamp1
1256049553.0
>>> datetime.utcfromtimestamp(timestamp1)
datetime.datetime(2009, 10, 20, 14, 39, 13)
于 2009-10-20T14:37:12.333 に答える
5

メソッドを使用できると思いますutcoffset()

utc_time = datetime1 - datetime1.utcoffset()

astimezone()ドキュメントでは、メソッドhereを使用してこの例を示しています。

さらに、タイムゾーンを扱う場合は、datetime をさまざまなタイムゾーン (EST と UTC の間を含む) に変換するための便利なツールがたくさんあるPyTZ ライブラリを調べることをお勧めします。

PyTZ の場合:

from datetime import datetime
import pytz

utc = pytz.utc
eastern = pytz.timezone('US/Eastern')

# Using datetime1 from the question
datetime1 = datetime.strptime(somestring, "%Y-%m-%dT%H:%M:%S")

# First, tell Python what timezone that string was in (you said Eastern)
eastern_time = eastern.localize(datetime1)

# Then convert it from Eastern to UTC
utc_time = eastern_time.astimezone(utc)
于 2009-10-20T14:38:16.557 に答える
5
def getDateAndTime(seconds=None):
 """
  Converts seconds since the Epoch to a time tuple expressing UTC.
  When 'seconds' is not passed in, convert the current time instead.
  :Parameters:
      - `seconds`: time in seconds from the epoch.
  :Return:
      Time in UTC format.
"""
return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime(seconds))`

これは現地時間を UTC に変換します

time.mktime(time.localtime(calendar.timegm(utc_time)))

http://feihonghsu.blogspot.com/2008/02/converting-from-local-time-to-utc.html

mktime を使用して struct_time を seconds-since-the-epoch に変換する場合、この変換はローカル タイムゾーンで行われます。UTC だけでなく、特定のタイムゾーンを使用するように指示する方法はありません。標準の「time」パッケージは、時刻がローカル タイムゾーンにあることを常に前提としています。

于 2009-10-20T18:00:42.623 に答える
4

おそらく、次の 2 つのいずれかが必要です。

import time
import datetime

from email.Utils import formatdate

rightnow = time.time()

utc = datetime.datetime.utcfromtimestamp(rightnow)
print utc

print formatdate(rightnow) 

2つの出力は次のようになります

2009-10-20 14:46:52.725000
Tue, 20 Oct 2009 14:46:52 -0000
于 2009-10-20T14:50:53.747 に答える