简体   繁体   English

如何在python中将“上周日”或“下周一”之类的时间字符串转换为日期时间格式

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

I am trying to find a way to convert a time string like "last Sunday" or "Next Monday" into DateTime format using python 3. I tried out using the follwoing:我正在尝试找到一种使用 python 3 将“上周日”“下周一”之类的时间字符串转换为 DateTime 格式的方法。我尝试使用以下方法:

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

but it gave a output like this:但它给出了这样的输出:

1900-01-01 00:00:00

I want to know how to get the Date in relation to the current Date!我想知道如何获取与当前日期相关的日期!

Thank you :)谢谢 :)

My suggestion: Build up a helper index to find out how many days ahead or before the day is and then work with timedelta .我的建议:建立一个辅助索引以找出一天之前或之前的天数,然后使用timedelta The following code should showcase what I mean, not super Pythonic but it does the trick for your examples.下面的代码应该展示我的意思,不是超级 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.

相关问题 python将字符串时间转换为sql datetime格式 - python convert string time to sql datetime format 如何使用Python将LabVIEW十进制日期转换为字符串日期时间格式? - How do I convert a LabVIEW decimal date into a string datetime format using Python? 将 DataFrame 列从字符串转换为日期时间格式“2001 年 1 月 1 日星期一” - Convert DataFrame column from string to datetime for format "January 1, 2001 Monday" Python:如何在不知道格式的情况下将字符串转换为日期时间? - Python: How can I convert string to datetime without knowing the format? 如何将 python 中的时间戳转换为日期时间格式以获得 cosmos 数据? - How do I convert timestamp to datetime format in python for cosmos data? 如何在 pandas python 中将字符串转换为日期时间格式? - How to convert string to datetime format in pandas python? 如何将具有不同时区的字符串转换为日期时间 object? - How do I convert a string with a different time zone to a datetime object? 如何将 python 日期时间转换为具有可读格式日期的字符串? - How do I turn a python datetime into a string, with readable format date? 如何将字符串转换为具有相关时区的python datetime对象? - How do I convert a string to a python datetime object with a relevant timezone? 如何在 python 中将时间值(字符串)转换为日期时间? - how to convert time values (in string) to datetime in python?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM