5

NTP サーバーから (Python スクリプトを使用して) 取得した時刻を "Wed Jul 13 00:17:58 CEST 2011" という形式で "2011-07-13 00:18:10" という形式に変換することは可能ですか?

    client = socket(AF_INET, SOCK_DGRAM)
    data = '\x1b' + 47 * '\0'
    client.sendto(data, (ntp.server.com,123))
    data, address = client.recvfrom( 1024 )
    if data:
        utc_secs = struct.unpack('!12I', data)[10]
        utc_secs -= 2208988800L
        utc_secs = time.ctime(utc_secs)
        print utc_secs
        return utc_secs

私はこの形式を取得します:「Wed Jul 13 00:17:58 CEST 2011」

これをこの形式に変換したい "2011-07-13 00:17:58" ( '%Y-%m-%d %H:%M:%S' )

ありがとう :)

4

2 に答える 2

3

あなたの場合、あなたは秒数からあなたが望む時間形式に直接行くことができます。ただし、下部にあるケースの正確なスニペットの前に、一般的な解決策について説明します。

一般に、このタイプの問題はstrptimestrftimeの助けを借りて解決されます。Pythonドキュメントのフォーマットコードも参照する必要があります。

strptime()日付文字列の断片と一致し、Pythonの時間構造を作成します。strftime()次に、その時間構造を任意の形式に変換するために使用できます。

from datetime import datetime
ntp_time = datetime.strptime(time_str_from_ntp, "%a %b %y %H:%M:%S")
formatted_time = datetime.strftime(ntp_time, "%Y-%m-%d %H:%M:%S")

または、特定のケースでは、置き換えることができます

utc_secs = time.ctime(utc_secs)

with(注:まだ行っていない場合は、単にではなく、以下をfrom datetime import datetime使用する必要があります)datetime.datetime.fromtimestampdatetime.fromtimestamp

formatted_time = datetime.fromtimestamp(utc_secs).strftime("%Y-%m-%d %H:%M:%S")
于 2011-07-12T23:03:00.380 に答える
1
>>> sec #your utc_secs
1310511730
>>> time.ctime(sec) #instead of this
'Wed Jul 13 02:02:10 2011'
>>> d = datetime.datetime.fromtimestamp(sec) #do this
>>> d   
datetime.datetime(2011, 7, 13, 2, 2, 10)
>>> d.strftime('%Y-%m-%d %H:%M:%S')
'2011-07-13 02:02:10'
于 2011-07-12T23:06:05.437 に答える