作者:学渣小小柱 | 来源:互联网 | 2023-09-25 21:06
我已经看到了一些关于此的威胁,但我不太确定如何做我的。我有一个字符串日期(DD/MM/YY)然后我需要将日期减去2,我需要将其更改为(MM/DD/YY)。例如,如果我有一个字符串
我已经看到了一些关于此的威胁,但我不太确定如何做我的。我有一个字符串日期 (DD/MM/YY) 然后我需要将日期减去 2,我需要将其更改为 (MM/DD/YY)。例如,如果我有一个字符串 01/04/2021,我需要最终输出为 03/30/2021。我曾尝试使用 datetime.date,但似乎我无法在其中放入 01/04/2021 的字符串。有帮助吗?这是我到目前为止所得到的,但它并没有真正起作用我不太了解日期时间库所以它有点令人困惑,提前抱歉。
import datetime as dt
from dateutil.relativedelta import relativedelta
date_1 = '01/04/2021'
date_2 = list(date_1)
date_2[0:2], date_2[3:5] = date_2[3:5], date_2[0:2]
date_2 = ''.join(date_2) # change date_1 to MM/DD/YY
print(dt.date(int(date_2[0:4]),int(date_2[5:7]), int(date_2[8:10])) - relativedelta(days=2)) # i tried to minus the day out, but the code fails,
#Here is the error, in case it helps, ValueError: invalid literal for int() with base 10: '04/0'
回答
您可以使用timedelta
,strptime
和strftime
。
from datetime import datetime
from datetime import timedelta
d = '01/04/2021'
print((datetime.strptime(d, '%d/%m/%Y') - timedelta(days=2)).strftime('%m/%d/%y'))
#03/30/21
解释
datetime.strptime
: 此函数允许您获取一个string
,提供格式并返回一个datetime
对象。
datetime.strptime(d, '%d/%m/%Y')
datetime.datetime(2021, 4, 1, 0, 0)
datetime.timedelta
:允许我们在datetime
对象上加减时间。
datetime.strptime(d, '%d/%m/%Y') - timedelta(days=2)
datetime.datetime(2021, 3, 30, 0, 0)
datetime.strftime
: 允许我们将日期时间对象string
格式化为我们指定的格式
datetime(2021, 3, 30, 0, 0).strftime('%m/%d/%y')
'03/30/21'
将所有这些结合在一起,我们可以将您的转换string
为 a date
,将其更改为date
我们想要的,然后将其转换回 a string
。