EWS对日期、时间和时区有一些特殊要求,因此在使用这些时需要使用EWSDate
,EWSDateTime
和EWSTimeZone
三个特殊类。
from datetime import datetime, timedelta
import pytz
from exchangelib import EWSTimeZone, EWSDateTime, EWSDate
# EWSTimeZone和pytz.timezone()类似
tz = EWSTimeZone.timezone('Europe/Copenhagen')
# 可以使用本地计算机时区
tz = EWSTimeZone.localzone()
# EWSDate、EWSDateTime和datetime.datetime、datetime.date类似。要始终使用EWSTimeZone.localize()函数创建与时区关联的日期时间:
localized_dt = tz.localize(EWSDateTime(2017, 9, 5, 8, 30))
right_now = tz.localize(EWSDateTime.now())
# 日期时间可以加减
two_hours_later = localized_dt + timedelta(hours=2)
two_hours = two_hours_later - localized_dt
two_hours_later += timedelta(hours=2)
# 日期
my_date = EWSDate(2017, 9, 5)
today = EWSDate.today()
also_today = right_now.date()
also_today += timedelta(days=10)
# UTC帮助类. 'UTC'是一个EWSTimeZone实例,'UTC_NOW'返回时区相关的当前UTC时间戳.
from exchangelib import UTC, UTC_NOW
right_now_in_utc = UTC.localize(EWSDateTime.now())
right_now_in_utc = UTC_NOW()
# 首先指定时区,然后创建时区相关的时间日期类实例,最后通过from_datetime()函数获得EWSDatetime
pytz_tz = pytz.timezone('Europe/Copenhagen')
py_dt = pytz_tz.localize(datetime(2017, 12, 11, 10, 9, 8))
ews_now = EWSDateTime.from_datetime(py_dt)