3

今、私はminttのようなdatetimeを持っています

In [134]: mintt
Out[134]: datetime.datetime(2012, 5, 9, 23, 21, 10, 548382, tzinfo=<matplotlib.dates._UTC object at 0x2f805d0>)    

そして私はそれを次のように変更します:

In [131]: mintt.isoformat(" ").split(".")[0]
Out[131]: '2012-05-09 23:21:10'

分と秒を削除して、「2012-05-09 23:00:00」にするにはどうすればよいですか?

PS:最初は以下の方法を使用します:

In [135]: mintt.strftime('%Y-%m-%d %H:00:00')
Out[135]: '2012-05-09 23:00:00'

ただし、「 year=1601 is before 1900; 」のような例外が発生します。datetime strftime() メソッドには year >= 1900' が必要です

だから私はisoformatメソッドを使用します

4

3 に答える 3

4

メソッドを使用しdatetime.replace()ます。

>>> import datetime
>>> t = datetime.datetime(2012, 5, 9, 23, 21, 10, 548382)
>>> t.replace(minute=0, second=0, microsecond=0).isoformat(' ')
'2012-05-09 23:00:00'

これは変更tされず、新しいオブジェクトが作成されます。

>>> t
datetime.datetime(2012, 5, 9, 23, 21, 10, 548382) # still has same value
于 2012-12-11T16:59:34.037 に答える
1

元の時間から秒と分を引くことができます...

nominsec = mintt - datetime.timedelta(minutes=mintt.minute, seconds=mintt.second)
于 2012-12-11T16:59:12.040 に答える
0

そのdatetimeオブジェクトの場合、おそらくこれは?:

>>> dt = datetime.datetime.strptime('2012-05-09 23:00:00','%Y-%m-%d %H:%M:%S')
>>> dt
datetime.datetime(2012, 5, 9, 23, 0)
>>> "{} {}:00:00".format(dt.date(),dt.hour)
'2012-05-09 23:00:00'
于 2012-12-11T17:03:58.830 に答える