将月份缩写字符串转换为 python 中的日期

Transform month abbreviation strings to date in python

我有一个带有缩写月份名称的列表

shortmonth = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

并且我想将每个元素都设为 2020 年的日期格式,因此每个元素的形式为

'2020-01-01'

作为日期而不是简单的字符串。我是 python 的新手,如果有人能告诉我该怎么做。

您可以使用range()生成月份数字; shortmonth 列表不是必需的。您可以执行以下操作:

print(['2020-{0:02d}-01'.format(i) for i in range(1, 13)])

如果要创建 datetime 个对象,可以执行以下操作:

from datetime import datetime
print([datetime.strptime('2020-{0:02d}-01'.format(i), "%Y-%m-%d") for i in range(1, 13)])

如果您想使用 datetime.datetimedatetime.date 对象,并且假设您希望所有月份都按顺序排列,您可以跳过月份缩写字符串并执行如下操作:

month_starts = [
    datetime.date(year=2020, month=month, day=1)
    for month in range(1, 13)
]

month_starts = [
    datetime.datetime(year=2020, month=month, day=1)
    for month in range(1, 13)
]

如果您确实需要使用月份缩写字符串,您可以这样做:

month_abbr = 'Apr'  # coming from a file, input or from elsewhere in the program

month_number = shortmonth.index(month_abbr) + 1
the_month_start = datetime.date(year=2020, month=month_number, day=1)