【问题标题】:'str' object has no attribute 'weekday' Convert date to a string'str' 对象没有属性 'weekday' 将日期转换为字符串
【发布时间】:2020-11-03 11:05:04
【问题描述】:

我正在尝试发送一封 Outlook 电子邮件,其正文中包含一个取自 Excel 的小表格。电子邮件的主题应包含最后一个工作日期(周一至周五),格式为 yyyy-mm-day。我收到以下错误:

AttributeError: 'str' 对象没有属性 'weekday'。

谁能帮我确定电子邮件的日期格式?谢谢!

import win32com.client as win32
import pandas as pd
import datetime

df = pd.read_excel("Name of file","Name of tab", index_col=0, nrows = 2,  usecols = "B:E")
df.rename({"Unnamed: 4":" "}, axis="columns", inplace=True)
body = df.to_html() 


date = str (datetime.datetime.today().strftime('%Y-%m-%d'))
shift = datetime.timedelta(max(1,(date.weekday()+6)%7 - 3))

outlook = win32.gencache.EnsureDispatch('Outlook.Application')
new_mail = outlook.CreateItem(0)
new_mail.To = 'abcdefgh@outlook.com'
new_mail.Subject = 'XXXXXXX as of ' + str (date - shift)
new_mail.HTMLBody = (body)
new_mail.Send()

【问题讨论】:

  • 您已将 datetime 对象转换为 date = str (datetime.datetime.today().strftime('%Y-%m-%d')) 中的字符串。删除 str() 它应该可以工作。

标签: python string datetime outlook


【解决方案1】:
date = datetime.datetime.today()
shift = datetime.timedelta(max(1,(date.weekday()+6)%7 - 3))
...

new_mail.Subject = 'XXXXXXX as of ' + (date - shift).strftime('%Y-%m-%d')

问题是您最初将日期转换为字符串,因此无法从那里对其执行日期算术。

【讨论】:

    猜你喜欢
    • 2020-05-21
    • 2020-11-30
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2012-01-28
    相关资源
    最近更新 更多