如何将日期中的日期替换为另一日期?

问题描述 投票:0回答:3

我试图将 if 语句中的日期替换为我的日期,但我不断收到这一年的输出。 05/15/5 除了 05/15/2020 之外。代码如下:

today_date = datetime.datetime.now()
date = today_date.date()
formatted_date = datetime.date.strftime(date, "%m/%d/%Y")

mmonth = date.month
myear = date.year
mdate = date.day

if mdate < 7:
    m0weekend = formatted_date.replace(str(myear),str(mmonth),1)
else:
    m0weekend = formatted_date.replace(str(myear),str(mmonth),15)
python datetime
3个回答
8
投票

在转换为字符串之前替换日期更容易:

date = date.replace(day=1)

或者,就您而言:

if mdate < 7:
    m0weekend = date.replace(day=1)
else:
    m0weekend = date.replace(day=15)

1
投票

您可能会直接从

datetime.date
获取今天
datetime
,而不是创建
datetime.datetime
并转换为日期。有了今天之后,您可能会创建所需的
datetime.date
并将其变成
str
,即:

import datetime
today = datetime.date.today()
date = datetime.date(today.year, today.month, 1 if today.day < 7 else 15)
formatted_date = datetime.date.strftime(date, "%m/%d/%Y")
print(formatted_date)  # 05/15/2020

0
投票

formatted_date 实际上是一个字符串。 您使用的是 str.replace() 方法而不是 datetime.date.replace() 方法。

import datetime

today_date = datetime.datetime.now()
pre_formatted_date = today_date.date()


mmonth = pre_formatted_date.month
myear = pre_formatted_date.year
mdate = pre_formatted_date.day

if mdate < 7:
    pre_formatted_date = pre_formatted_date.replace(day=1)
else:
    pre_formatted_date = pre_formatted_date.replace(day=15)

print(pre_formatted_date)
formatted_date = pre_formatted_date.strftime("%m/%d/%Y")
print(formatted_date)

其输出如下:

2020-05-15
05/15/2020
© www.soinside.com 2019 - 2024. All rights reserved.