Im đang làm việc để chuyển đổi dấu thời gian epoch thành các ngày trong các múi giờ khác nhau với pytz. Những gì tôi đang cố gắng làm là tạo ra một đối tượng DateTime chấp nhận một múi giờ cơ sở dữ liệu Olson và một thời gian epoch và trả về một đối tượng datetime đã bản địa hoá. Cuối cùng tôi cần phải trả lời các câu hỏi như "Giờ nó ở New York vào thời điểm kỷ nguyên 1350663248?"Bản địa hóa thời gian Epoch với pytz bằng Python
xảy ra sự cố một cách chính xác ở đây:
import datetime, pytz, time
class DateTime:
def __init__(self, timezone, epoch):
self.timezone = timezone
self.epoch = epoch
timezoneobject = pytz.timezone(timezone)
datetimeobject = datetime.datetime.fromtimestamp(self.epoch)
self.datetime = timezoneobject.localize(datetimeobject)
def hour(self):
return self.datetime.hour
if __name__=='__main__':
epoch = time.time()
dt = DateTime('America/Los_Angeles',epoch)
print dt.datetime.hour
dt = DateTime('America/New_York',epoch)
print dt.datetime.hour
này in cùng một giờ, trong khi người ta phải 3 giờ hoặc lâu hơn trước. Có gì sai ở đây? Tôi là một người mới bắt đầu Python, mọi trợ giúp đều được đánh giá cao!
Bạn đang sử dụng thuật ngữ sai ở đây. Kỷ nguyên là * luôn luôn * 1-1-1970, nửa đêm UTC. Những gì bạn có là một dấu thời gian UNIX, đó là một bù đắp từ kỷ nguyên. Xem https://en.wikipedia.org/wiki/Unix_epoch –
chỉ là một tên biến, bạn có thể gọi nó là 'epoch_time' nó làm cho không có sự khác biệt cho vấn đề – mobiusinversion