如何在 python 中将 "last Sunday" 或 "Next Monday" 等时间字符串转换为日期时间格式



我正试图找到一种方法,使用python 3将时间字符串(如"last Sunday">《Next Monday》(转换为DateTime格式。我尝试使用以下操作:

x = datetime.strptime("Sunday", "%A")

但它给出了这样的输出:

1900-01-01 00:00:00

我想知道如何获得与当前日期相关的日期!

谢谢:(

我的建议是:建立一个助手索引,以了解一天的前几天,然后使用timedelta。下面的代码应该展示我的意思,不是超级Python,但它为您的示例提供了技巧。

from datetime import datetime
from datetime import timedelta
now = datetime.now()
nowDayString = now.strftime("%A")
days = [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
]

def buildLut():
floatingDays = [""]*8
for idx, day in enumerate(days):
if day == nowDayString:
floatingDays[0] = nowDayString
floatingDays[7] = nowDayString
for i, j in zip(range(idx+1, len(days)), range(1, len(days))):
floatingDays[j] = days[i]
for i in range(idx):
floatingDays[7-(idx-i)] = days[i]
return floatingDays

def findme(s):
td = timedelta()
dayToLookFor = s.split(" ")[1]
if "last" in s.lower():
td = timedelta(days=-(7 - floatingDays.index(dayToLookFor)))
elif "next" in s.lower():
td = timedelta(days=floatingDays.index(dayToLookFor))
return now + td

floatingDays = buildLut()
print(floatingDays)
print(findme("last Sunday"))
print(findme("Next Monday"))

最新更新