首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TypeError:“datetime.datetime”对象的描述符'date‘不适用于'datetime.date’对象

TypeError:“datetime.datetime”对象的描述符'date‘不适用于'datetime.date’对象
EN

Stack Overflow用户
提问于 2021-12-19 16:41:30
回答 1查看 312关注 0票数 0

因此,我试图将YYYY-MM-DD字符串转换为英文格式,如:WEEKDAY DDth MONTH YEAR,但是,我有问题将字符串转换为日期格式,我认为这是YYYY, MM, DD格式。

这是我的代码:

代码语言:javascript
复制
from datetime import datetime, date
[...]
def getHumanDate(rawdate):
    the_date = date(int(rawdate[0:4]), int(rawdate[6:7]), int(rawdate[9:10]))

    weekday = (datetime.date(the_date).strftime('%A'))
    month = (datetime.date(the_date).strftime('%B'))

    year = int(rawdate[0:4])
    day = int(rawdate[9:10])

    english = weekday + " " + day + "th of " + month + " " + year
    return english

我得到了一个TypeError: descriptor 'date' for 'datetime.datetime' objects doesn't apply to a 'datetime.date' object错误,坦白地说,我无法控制我的头脑。

任何帮助都将不胜感激!干杯

编辑:这里的是一个使用日历库的工作示例,虽然完全不同,但它可以工作!

代码语言:javascript
复制
import calendar
[...]
def getHumanDate(rawdate):
    int_year = int(rawdate[0:4])
    int_month = int(rawdate[6:7])
    int_day = int(rawdate[9:10])

    week_days=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    months=["", "January","February","March","April","May","June","July", "August","September","October","November","December"]

    weekday = calendar.weekday(int_year, int_month, int_day)

        
    english = week_days[weekday] + " " + str(int_day) + "th of " + months[int_month] + " " + str(int_year)
    return English
EN

回答 1

Stack Overflow用户

发布于 2021-12-19 17:28:00

如果使用datetime中的strptime函数,则可以获得传递给函数的参数的隐式验证的额外优势。因此,我建议:

代码语言:javascript
复制
from datetime import datetime

dsuffix = [None, 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'st']
def getHumanDate(date): # parameter is expect in ISO format YYYY-MM-DD
    d = datetime.strptime(date, '%Y-%m-%d')
    a = datetime.strftime(d, '%A')
    b = datetime.strftime(d, '%B %Y')
    return f'{a} {d.day}{dsuffix[d.day]} {b}'

for i in range(1, 32):
    d = f'2021-12-{i}'
    print(getHumanDate(d))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70413377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档