1

私は、Pythonを介して今日と昨日(深夜)のPOSIX(UNIX)時間値を生成する方法を決定するのに苦労してきました。私はこのコードを作成しましたが、それらをPOSIX値に変換する方法につまずき続けています。

from datetime import datetime, timedelta
import time
today_string = datetime.now().strftime('%Y-%m-%d 00:00:00')
yesterday_string = (datetime.now() - timedelta(0)).strftime('%Y-%m-%d 00:00:00')

today = datetime.strptime(today_string, '%Y-%m-%d %H:%M:%S')
yesterday = datetime.strptime(yesterday_string, '%Y-%m-%d %H:%M:%S')

print time.mktime(today).timetuple()

このコードは例外を生成します:

TypeError: argument must be 9-item sequence, not datetime.datetime

この時点で、私は機知に富んでいます。あなたが提供できるどんな助けもありがたいです。

4

3 に答える 3

2

の結果ではなく、オブジェクトにtimetuple()メソッドを適用する必要があります。todaytime.mktime(today)

>>> time.mktime(today.timetuple())
1345845600.0

ところで、私は間違っていますか、それともあなたのコードyesterdayに等しいでしょうか?today

編集: 今日の POSIX 時刻を取得するには、次のようにします。

time.mktime(datetime.date.today().timetuple())
于 2012-08-25T08:11:05.520 に答える
1

@Bakuriu はここにあります。しかし、あなたはこれを複雑にしすぎています。

これを見てください:

from datetime import date, timedelta
import time

today = date.today()
today_unix = time.mktime(today.timetuple())

yesterday = today - timedelta(1)
yesterday_unix = time.mktime(yesterday.timetuple())

dateオブジェクトは時間を保持しないため、真夜中にリセットされます。

最後の部分を次のように置き換えることもできます。

yesterday_unix = today_unix - 86400

ただし、サマータイムが切り替わると正しく機能しないことに注意してください (つまり、午前 1 時または午後 23 時になります)。

于 2012-08-25T08:24:37.207 に答える
0

日時オブジェクトから文字列および浮動小数点数としてUNIXタイムスタンプを取得します。

datetime.now().strftime('%s')
'1345884732'

time.mktime(datetime.now().timetuple())
1345884732.0
于 2012-08-25T08:58:20.037 に答える