【发布时间】:2015-03-17 11:01:42
【问题描述】:
我在 Windows 7 机器上使用 pyExchange。我有一个简单的 python v2.7 脚本,可以从交换服务器检索 Outlook 日历事件。脚本如下:
代码:
from pyexchange import Exchange2010Service, ExchangeNTLMAuthConnection
from datetime import datetime
import time
from pytz import timezone
def getEvents():
URL = u'https://xxxxx.de/EWS/Exchange.asmx'
USERNAME = u'MS.LOCAL\\xxxxx'
PASSWORD = u"xxxxxx"
connection = ExchangeNTLMAuthConnection(url=URL,
username=USERNAME,
password=PASSWORD)
service = Exchange2010Service(connection)
timestamp = datetime.now()
print timestamp.strftime('%Y, %m, %d, %H, %M, %S')
print time.timezone
eventsList = service.calendar().list_events(
start=timezone("Europe/Amsterdam").localize(datetime(2015, 1, 19, 0, 0, 0)),
end=timezone("Europe/Amsterdam").localize(datetime(2015, 1, 19, 23, 59, 59)),
details=True
)
for event in eventsList.events:
print "{start} {stop} - {subject} - {room}".format(
start=event.start,
stop=event.end,
subject=event.subject,
room=event.location
)
getEvents()
问题:
事件的时间戳与 Outlook 中事件的时间戳不匹配。我使用 Outlook 以及 pyExchange 脚本手动创建了事件。
例如:如果我在 Outlook 中从11:00 AM - 11:30 AM 创建一个事件,那么上述脚本将返回该事件的时间戳为10:00 AM - 10:30 AM。时间少了一小时/后退。
如果我检查我的 time.timezone,它会返回 W. Europe Standard Time。我也在脚本中指定了我的时区,即。 Europe/Amsterdam。但问题仍然存在。我还检查了 Outlook 中的时区设置。如下图所示:
我登录了 Exchange 服务器,它也与我的客户端计算机位于同一时区。
关于为什么事件的时间不正确的任何建议?这是 pyExchange 中的错误吗?如果有人可以对此进行测试并在这里报告,我将不胜感激,以确保不仅是我面临这个问题。
【问题讨论】:
-
这看起来像是 API 使用问题(传递了错误的参数,例如,它可能期望本地时区中的原始日期时间对象)或 Exchange 堆栈中的错误。
tzlocal.get_localzone()返回什么? -
它返回
Europe/Berlin,即使我在脚本中更改它而不是Europe/Amsterdam,也没有任何变化。问题依然存在。 -
Europe/Berlin和Europe/Amsterdam现在都是CET+0100。最近日期的时区相同。我不希望有不同的结果(这只是一个健全的检查)。 -
这里是包维护者,我去看看。时区是棘手的野兽,它很可能是包中的一个错误。抱歉问题!
标签: python python-2.7 outlook timezone pyexchange