使用datetime时闰年前后代码中的问题(初学者帮助)

2024-10-03 00:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是,无论何时出现2月29日的结果,都会导致datetime.strTime出现闰年问题。易趣没有附上年份,所以我相信通过阅读它会自动注册1900年为年份。我不知道如何将其设置为当前格式为“%b-%d%H:%M”到类似“%y-%b-%d%H:%M”的格式,或者将“%y”放在表示年份=任何内容的位置

from datetime import datetime
from datetime import date

    for container in search:

        #Date Sold
        sold = container.find('span', class_='s-item__ended-date').text
        soldd = datetime.strptime(sold, '%b-%d %H:%M')
        solddd = datetime.strftime(soldd, '%d-%b') 
        Date_sold.append(solddd)

Tags: infromimport内容fordatetimedatecontainer
1条回答
网友
1楼 · 发布于 2024-10-03 00:28:07

正如我理解您的问题,您希望将给定日期转换为自定义年份。因此,例如:Feb-29可以转换为[year]-02-29,其中[year]可以根据您的选择进行更改

如果这是您想要的,那么您只需在转换数据之前将所选年份附加到数据中即可。所以,它看起来是这样的:

from datetime import datetime

sold = "Feb-29 13:05"
year = "2020-"
soldd = datetime.strptime(year+sold, '%Y-%b-%d %H:%M')
print(soldd)
# 2020-02-29 13:05:00

正如您在问题中所说:如果您在strptime期间没有通过任何年份,此函数将分配year = 1990这不是闰年。因此,这个给定的日期(Feb-29)将抛出以下错误:

ValueError: day is out of range for month

所以,你需要确保你选择的年份是闰年。以下是过去十年中的所有闰年:

leap_years = [1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2020]

相关问题 更多 >