1

このタイムスタンプがあるとします:

In [146]: t
Out[146]: datetime.time(11, 2, 5, 110521)

これを真夜中からの秒数に変換するにはどうすればよいですか? 1 つのアプローチは、最初にこれを に変換することtimedeltaです。

In [147]: datetime.timedelta(hours=t.hour, minutes=t.minute, seconds=t.second, microseconds=t.microsecond)
Out[147]: datetime.timedelta(0, 39725, 110521)

それから私は取ることができますtotal_seconds()。しかし、これは本当に長続きしているようです。より Pythonic な方法はありますか?

4

1 に答える 1

2

属性と属性を乗算しhourminute属性を除算して、microsecondすべて足し合わせるだけです。

>>> (t.hour * 3600) + (t.minute * 60) + t.second + (t.microsecond / 1000000.0)
39725.110521

残念ながら、オブジェクトは減算をサポートしていないdatetime.time.minため、使用できません。datetime.time

時間と (サポートされている最も早い日付) を組み合わせてオブジェクトを生成し、(サポートされている最も早い日付と時刻) を減算することもできますが、これも長ったらしくなります。datetime.datetimedatetime.date.mindatetime.datetime.min

>>> datetime.datetime.combine(datetime.date.min, t) - datetime.datetime.min
datetime.timedelta(0, 39725, 110521)
>>> (datetime.datetime.combine(datetime.date.min, t) - datetime.datetime.min).total_seconds
39725.110521
于 2014-02-10T17:51:25.970 に答える