簡體   English   中英

如何在python中將“上周日”或“下周一”之類的時間字符串轉換為日期時間格式

[英]How do I convert a time string like "last Sunday" or "Next Monday" into datetime format in python

我正在嘗試找到一種使用 python 3 將“上周日”“下周一”之類的時間字符串轉換為 DateTime 格式的方法。我嘗試使用以下方法:

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

但它給出了這樣的輸出:

1900-01-01 00:00:00

我想知道如何獲取與當前日期相關的日期!

謝謝 :)

我的建議:建立一個輔助索引以找出一天之前或之前的天數,然后使用timedelta 下面的代碼應該展示我的意思,不是超級 Pythonic,但它可以為您的示例提供技巧。

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"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM