2012-07-05 44 views
5

Đầu ra của datetime.datetime.now() kết quả đầu ra trong múi giờ gốc của tôi là UTC-8. Tôi muốn chuyển đổi nó thành một dấu thời gian thích hợp với một tzinfo của UTC.TênError: tên 'UTC' không được xác định

from datetime import datetime, tzinfo 
x = datetime.now() 
x = x.replace(tzinfo=UTC) 

^kết quả đầu ra NameError: Tên 'UTC' không được định nghĩa

x.replace(tzinfo=<UTC>) đầu ra Lỗi Cú pháp: cú pháp hợp lệ

x.replace(tzinfo='UTC') đầu ra Lỗi Loại: tzinfo luận phải Không có hoặc của một lớp con tzinfo, không gõ ' str '

Cú pháp chính xác để sử dụng để hoàn thành ví dụ của tôi là gì?

+1

thư viện chuẩn của Python không bao gồm bất kỳ tzinfo lớp học, bao gồm UTC. Các tài liệu hướng dẫn không bao gồm các hướng dẫn để tạo ra một mặc dù. –

Trả lời

8

Bạn cần sử dụng thư viện bổ sung như pytz. Mô-đun datetime của Python không bao gồm bất kỳ lớp học nào tzinfo, bao gồm UTC và chắc chắn không phải múi giờ địa phương của bạn.

+1

+1 Những pin này không bao gồm: ( –

+1

Cảm ơn! Đối với những người tò mò, kết thúc bằng cách sử dụng 'x.replace (tzinfo = pytz.utc) + timedelta (giờ = 8)' –

3

Nếu tất cả các bạn đang tìm kiếm là thời điểm bây giờ trong UTC, datetime có một dựng sẵn cho rằng:

x = datetime.utcnow() 

Đáng tiếc là nó không bao gồm bất kỳ tzinfo, nhưng nó cung cấp cho bạn thời gian tính theo giờ UTC.

Ngoài ra nếu bạn làm cần tzinfo bạn có thể làm điều này:

from datetime import datetime 
import pytz 
x = datetime.now(tz=pytz.timezone('UTC')) 

Bạn cũng có thể quan tâm đến một danh sách các múi giờ: Python - Pytz - List of Timezones?

Các vấn đề liên quan