我在python中創建了一個模塊,其中我使用整數格式(如20120213
,表示2012年2月13日)接收日期。現在,我想將此整數格式的日期轉換爲python日期對象。如何將整數轉換爲日期對象python?
此外,如果有任何方法可以減去/添加此類整數格式化日期中的天數以接收相同格式的日期值?比如從20120213
減去30天,並收到答案爲20120114
?
我在python中創建了一個模塊,其中我使用整數格式(如20120213
,表示2012年2月13日)接收日期。現在,我想將此整數格式的日期轉換爲python日期對象。如何將整數轉換爲日期對象python?
此外,如果有任何方法可以減去/添加此類整數格式化日期中的天數以接收相同格式的日期值?比如從20120213
減去30天,並收到答案爲20120114
?
我建議轉換以下簡單的方法:
from datetime import datetime, timedelta
s = "20120213"
# you could also import date instead of datetime and use that.
date = datetime(year=int(s[0:4]), month=int(s[4:6]), day=int(s[6:8]))
對於加/減天的arbitary量(秒工作太BTW),你可以做到以下幾點:
date += timedelta(days=10)
date -= timedelta(days=5)
並轉換回用:
s = date.strftime("%Y%m%d")
於CONV ERT整數爲字符串安全,使用方法:
s = "{0:-08d}".format(i)
這可以確保您的字符串是八個charecters長,左側填充零,即使年份小於1000(陰性年可能會成爲有趣的,雖然)。
這個問題已經回答了,但對於其他人在看這個問題的好處我想補充以下建議:與其做切片你之上你的建議也可能使用(IMHO)更容易閱讀的strptime(),也許是進行這種轉換的首選方式。
import datetime
s = "20120213"
s_datetime = datetime.datetime.strptime(s, '%Y%m%d')
以下是我認爲回答這個問題(Python 3中,用類型提示):
from datetime import date
def int2date(argdate: int):
"""
If you have date as an integer, use this method to obtain a datetime.date object.
Parameters
----------
argdate : int
Date as a regular integer value (example: 20160618)
Returns
-------
dateandtime.date
A date object which corresponds to the given value `argdate`.
"""
year = int(argdate/10000)
month = int((argdate % 10000)/100)
day = int(argdate % 100)
return date(year, month, day)
print(intdate2date(20160618))
上面的代碼產生預期2016-06-18
。
thnx :)快樂編碼... – Uday0119 2012-03-17 13:34:37
但我接收的不是一個字符串。它的整數 – Uday0119 2012-03-17 13:36:22
好吧,這並不難,你可以使用str(x)將整數轉換爲一個字符串。 – Peter 2012-03-17 13:42:25