2012-12-11 96 views
3

現在我有日期時間像mintt你如何格式的日期時間,如「2012年12月11日12:00:00」

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' 

但它會引發異常,如」一年= 1601是1900年以前;日期時間的strftime()方法需要一年> = 1900'

所以我用isoformat方法

回答

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 
+0

可能是因爲版本的原因,我得到了我想要通過下面的代碼:在[145]:mintt.replace(minute = 0,second = 0).isoformat('').split(「。」)[0] Out [145]:'2012-05-09 23:00:00'thank你幫我解決了基本問題:) – wuwucat

+0

@orokusaki:重讀[PEP-8命名約定](http://www.python.org/dev/peps/pep-0008/#prescriptive-naming-conventions)。 –

+0

@DietrichEpp - 原諒我,我的意思是「Pylint」,這在SO回答的背景下並不重要。 – orokusaki

1

,你可以從你原來的時間減去秒,分鐘...

nominsec = mintt - datetime.timedelta(minutes=mintt.minute, seconds=mintt.second) 
+0

說實話,我喜歡迪特里希的解決方案更好 –

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' 
相關問題