Bạn có thể làm điều đó directrly trên constructor: class datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[,
tzinfo]]]]])
, tzinfo trở thành một đối tượng dervided datetime.tzinfo
.
tzinfo là một lớp cơ sở trừu tượng, có nghĩa là lớp này sẽ không được khởi tạo trực tiếp. Bạn cần lấy ra một lớp con cụ thể, và (ít nhất) cung cấp việc triển khai các phương thức tzinfo tiêu chuẩn cần thiết bởi các phương thức datetime mà bạn sử dụng. Mô-đun datetime không cung cấp bất kỳ lớp con cụ thể nào của tzinfo.
Điều bạn cần ghi đè là phương pháp utcoffset(self, dt)
.
Trả lại chênh lệch giờ địa phương từ UTC, sau vài phút về phía đông của UTC. Nếu giờ địa phương ở phía tây UTC, điều này sẽ là số âm. Lưu ý rằng điều này được dự định là tổng số bù trừ từ UTC; ví dụ, nếu một đối tượng tzinfo đại diện cho cả điều chỉnh múi giờ và DST, thì utcoffset() sẽ trả về tổng của chúng. Nếu không biết UTC offset, trả về None. Khác giá trị trả lại phải là đối tượng timedelta chỉ định toàn bộ số phút trong phạm vi từ -1439 đến 1439 bao gồm (1440 = 24 * 60; độ lớn của bù trừ phải nhỏ hơn một ngày). Hầu hết các triển khai của UTCOFFSET() có thể sẽ trông giống như một trong hai:
return CONSTANT # fixed-offset class
return CONSTANT + self.dst(dt) # daylight-aware class
Nếu UTCOFFSET() không trả lại Không, dst() không nên trở về None một trong hai.
Việc thực hiện mặc định utcoffset() tăng NotImplementedError.
Dupe- [Làm thế nào để dịch một tiêu chuẩn ISO 8601 chuỗi datetime vào một đối tượng Python datetime?] (Http://stackoverflow.com/câu hỏi/969285/how-do-i-dịch-a-iso-8601-datetime-chuỗi-thành-một-python-datetime-đối tượng/3908349 # 3908349) (và câu trả lời là 'dateutil.parser.phân tích cú pháp (datestring) 'trong cả hai) – Yarin
liên quan: [Làm thế nào để phân tích ngày với -0400 chuỗi múi giờ trong python?] (http://stackoverflow.com/q/1101508/4279) – jfs