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 # #