2525"""Tools to convert between Python datetime instances and Microsoft times."""
2626
2727from calendar import timegm
28- from datetime import datetime , timezone , tzinfo , timedelta
28+ from datetime import datetime , timedelta , UTC
2929
3030# http://support.microsoft.com/kb/167296
3131# How To Convert a UNIX time_t to a Win32 FILETIME or SYSTEMTIME
3737HOUR = timedelta (hours = 1 )
3838
3939
40- class UTC (tzinfo ):
41- """UTC"""
42-
43- def utcoffset (self , dt : datetime ) -> timedelta :
44- return ZERO
45-
46- def tzname (self , dt : datetime ) -> str :
47- return "UTC"
48-
49- def dst (self , dt : datetime ) -> timedelta :
50- return ZERO
51-
52-
53- utc = UTC ()
54-
55-
5640def dt_to_filetime (dt : datetime ) -> int :
5741 """Converts a datetime to Microsoft filetime format. If the object is
5842 time zone-naive, it is forced to UTC before conversion.
5943
6044 >>> "%.0f" % dt_to_filetime(datetime(2009, 7, 25, 23, 0))
6145 '128930364000000000'
6246
63- >>> "%.0f" % dt_to_filetime(datetime(1970, 1, 1, 0, 0, tzinfo=utc ))
47+ >>> "%.0f" % dt_to_filetime(datetime(1970, 1, 1, 0, 0, tzinfo=UTC ))
6448 '116444736000000000'
6549
6650 >>> "%.0f" % dt_to_filetime(datetime(1970, 1, 1, 0, 0))
@@ -70,7 +54,7 @@ def dt_to_filetime(dt: datetime) -> int:
7054 128930364000001000
7155 """
7256 if (dt .tzinfo is None ) or (dt .tzinfo .utcoffset (dt ) is None ):
73- dt = dt .replace (tzinfo = utc )
57+ dt = dt .replace (tzinfo = UTC )
7458 ft = EPOCH_AS_FILETIME + (timegm (dt .timetuple ()) * HUNDREDS_OF_NANOSECONDS )
7559 return ft + (dt .microsecond * 10 )
7660
@@ -91,7 +75,7 @@ def filetime_to_dt(ft: int) -> datetime:
9175 # Get seconds and remainder in terms of Unix epoch
9276 (s , ns100 ) = divmod (ft - EPOCH_AS_FILETIME , HUNDREDS_OF_NANOSECONDS )
9377 # Convert to datetime object
94- dt = datetime .fromtimestamp (s , timezone . utc )
78+ dt = datetime .fromtimestamp (s , UTC )
9579 # Add remainder in as microseconds. Python 3.2 requires an integer
9680 dt = dt .replace (microsecond = (ns100 // 10 ))
9781 return dt
0 commit comments