Vì vậy, tôi có đối tượng datetime trong thời gian UTC và tôi muốn chuyển đổi chúng thành dấu thời gian UTC. Vấn đề là, time.mktime thực hiện các điều chỉnh cho giờ địa phương.Làm cách nào để tạo dấu thời gian unix không điều chỉnh cho giờ địa phương?
Vì vậy, đây là một số mã:
import os
import pytz
import time
import datetime
epoch = pytz.utc.localize(datetime.datetime(1970, 1, 1))
print time.mktime(epoch.timetuple())
os.environ['TZ'] = 'UTC+0'
time.tzset()
print time.mktime(epoch.timetuple())
Dưới đây là một số kết quả:
Python 2.6.4 (r264:75706, Dec 25 2009, 08:52:16)
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import pytz
>>> import time
>>> import datetime
>>>
>>> epoch = pytz.utc.localize(datetime.datetime(1970, 1, 1))
>>> print time.mktime(epoch.timetuple())
25200.0
>>>
>>> os.environ['TZ'] = 'UTC+0'
>>> time.tzset()
>>> print time.mktime(epoch.timetuple())
0.0
Vì vậy, rõ ràng là nếu hệ thống đang trong thời gian tính theo giờ UTC không có vấn đề, nhưng khi nó không phải, đó là một vấn đề . Thiết lập biến môi trường và gọi time.tzset hoạt động nhưng có an toàn không? Tôi không muốn điều chỉnh nó cho toàn bộ hệ thống.
Có cách nào khác để thực hiện việc này không? Hoặc là an toàn để gọi time.tzset theo cách này.