2016-04-18 6 views
1

私はOutlookのcreationTime形式を変更したいと思います。python:どのようにOutlookを変更するには、作成時間形式を取得する?

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

私はmessage.CreationTimeを使用するためのメッセージ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形式を変更できますか?

+0

印刷 'タイプ(SENDTIME)'と 'message.CreationTime'は、あなたがそれを変換するために何をすべきか判断するのに役立つべきである値の種類を見る(それはdoesnの'datatime'オブジェクトのように見えます)。 – martineau

+0

返信いただきありがとうございます。タイプ(sendTime)を印刷したときの結果はです。そして私は値を印刷しました。その結果は04/15/16 17:22:29です。私はこのようなsendTime形式を印刷したい2016-04-15 17:22:29。 – Bethlee

+0

Strange ...それは 'strftime()'メソッドを持つべきです。モジュールレベルの関数 'time.strftime( '%H:%M:%S'、sendTime)を使ってみてください。 – martineau

答えて

1

は、あなたがあなたがしようとしているように、その後time.strftime()でフォーマットすることができtime.strptime()を、使用してtime.struct_timeにそれを解析することができ、文字列です。

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 
+0

ありがとうございます。私はこの問題を解決しました。 sendTimeを文字列に置き換え、datetime.strptimeを使用します。 – Bethlee

1

MailItem.CreationTimeはDateTime値ですが、フォーマットはありません。文字列ではありません。低レベル(COM)では、8バイトの浮動小数点であり、整数は、1/1/1900からの日数であり、小数部は時刻です。 sendTime(あなたのコメントによる)以来

+0

返信いただきありがとうございます。このような値を印刷する方法はありますか?2016-04-15 17:22:29 ?? – Bethlee

+0

もちろん、それは形式を持っています。そうでなければ、目的を示すためには役に立たないでしょう。 MSのドキュメントを掘り下げた後、最下位レベルの8バイト値は "1601年1月1日以来100ナノ秒の間隔の数を表す64ビットの整数"となります。 – martineau

+0

@Bethlee - datetimeを適切にフォーマットする必要があります。あなたがPythonでそれをどうやって行うのか分かりません。 –

関連する問題