import plistlib
import os
import time
from datetime import datetime
from dateutil.tz import gettz
# create a controlled environment for testing: setup default timezone
os.environ['TZ'] = 'GMT'
time.tzset()
# create both timezone naive and timezone aware dates
naive = datetime(2020, 11, 18, 21, 0, 0)
aware = datetime(2020, 11, 18, 21, 0, 0, tzinfo=gettz('Europe/Paris'))
print(plistlib.dumps({'date': naive}))
# output correct:
#
#
#
#
# date
# 2020-11-18T21:00:00Z
#
#
print(plistlib.dumps({'date': aware}))
# output incorrect, date should be "2020-11-18T20:00:00Z":
#
#
#
#
# date
# 2020-11-18T21:00:00Z
#
#