python:如何更改outlook获取创建时间格式?

时间:2016-04-18 08:14:47

标签: python email outlook

我想更改outlook creationTime格式。

for message in sub.Items:
    subject = message.subject
    body = message.body
    sendTime = message.CreationTime

我收到使用creationTime的消息message.CreationTime。 当我打印sendTime时,结果是04/15/16 17:22:29。 所以我使用strftime来更改日期格式,但它不起作用。

我在源代码中导入了这样的库。

import win32com.client
from datetime import datetime, date, time
import string
import pymysql

但发生了错误:

Traceback (most recent call last):
File "D:\20_log\outlook\outlook.py", line 164, in <module> main()
File "D:\20_log\outlook\outlook.py", line 161, in main get_outlook_message()
File "D:\20_log\outlook\outlook.py", line 56, in get_outlook_message
sendTime.strftime('%H:%M:%S')
AttributeError: strftime

如何更改展示creationTime格式?

2 个答案:

答案 0 :(得分:1)

MailItem.CreationTime是DateTime值,它没有任何格式 - 它不是字符串。在低级别(COM),它是一个8字节的浮点数,整数是自1/1/1900以来的天数,小数部分是一天的时间。

答案 1 :(得分:1)

由于(根据您的评论)sendTime是一个字符串,您可以使用time.strptime()将其解析为time.struct_time,然后可以像time.strftime()那样使用import time sendTime = '04/15/16 17:22:29' # example value of message.CreationTime # parse sendTime into a time.struct_time sendTime_st = time.strptime(sendTime, '%m/%d/%y %H:%M:%S') # format the returned struct_time into the desired format print(time.strftime('%H:%M:%S', sendTime_st)) # another example print(time.strftime('%a, %m-%b-%y at %H:%M:%S', sendTime_st)) 进行格式化'试图这样做。

17:22:29
Fri, 04-Apr-16 at 17:22:29

输出:

        ReadOnlyCollection<IWebElement> topItem = driver.FindElements(By.XPath("//iframe[@src='Edit.aspx']"));

        Utility.Instance.WaitUntilFrameLoaded(topItem[0]);

        Thread.Sleep(2000);

        ReadOnlyCollection<IWebElement> elements = Utility.Instance.WaitUnitElementsAppearsByXPath("//div[@id='ctlPanel']//table/tbody/tr[2]//iframe[@src='javascript:true;']");

        Thread.Sleep(1000);

        foreach(IWebElement eleFrame in elements)
        {
            Utility.Instance.WaitUntilFrameLoaded(eleFrame);
            IWebElement body = driver.FindElement(By.TagName("body"));
            body.Click();
            driver.SwitchTo().DefaultContent();
            Utility.Instance.WaitUntilFrameLoaded(topItem[0]);
         }