PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Dừng thời gian dịch Django sang UTC

Bạn đang giải thích điều này một cách sai lầm. Cơ sở dữ liệu lưu trữ thời gian UTC hầu hết thời gian. Nếu bạn sử dụng PostgreSQL, cơ sở dữ liệu có thể lưu trữ thời gian với thông tin múi giờ, nhưng đối với các mục đích thực tế (*), dễ nhất là bạn chỉ nghĩ rằng thời gian trong db của bạn được lưu trữ dưới dạng UTC (tức là thời gian tuyệt đối có thể được chuyển đổi thành bất kỳ lúc nào vùng) khi USE_TZ = True . Nó luôn đại diện cho một thời điểm chính xác mà bạn không cần nhớ hoặc giả sử bất kỳ múi giờ nào. Và theo như tôi biết, Django sẽ luôn lưu trữ thời gian dưới dạng nhận biết thời gian trong múi giờ UTC.

Vì vậy, khi bạn đang tìm nạp đối tượng thời gian bằng cách sử dụng select trong psql , bạn đang lấy lại thời gian theo múi giờ địa phương của máy (múi giờ mà bạn đang chạy psql). Nếu ai đó ở "America / New_York" chạy cùng một truy vấn đã chọn, họ sẽ thấy dấu thời gian -04. Nếu ngày là 2019-03-20, thì bạn đã thấy 2019-03-20 10:50:00+00 bởi vì vào ngày đó, Châu Âu / Luân Đôn và UTC giống nhau.

Khi tìm nạp giá trị của DateTimeField dưới dạng python datetime.datetime đối tượng, Django luôn tìm nạp giá trị UTC, bởi vì:

Điều này giúp làm việc với các đối tượng datetime này trong mã python của bạn dễ dàng hơn:Chúng luôn là giờ UTC.

Nếu bạn muốn in các giá trị này trong một tệp PDF, hãy sử dụng các phương pháp tương tự mà Django sử dụng để hiển thị mẫu:

from django.utils import timezone
print(timezone.template_localtime(Booking.objects.get(pk=280825).start))

Điều này hiển thị ngày giờ trong múi giờ mặc định (hoặc nếu bạn activate() múi giờ khác, ở múi giờ hiện tại ).

(*) Lưu ý:Tại sao bạn không nên cho biết bất kỳ ý nghĩa nào đối với múi giờ được lưu trong db của bạn và chỉ nghĩ về nó như thể đó là UTC:Nếu bạn chạy máy chủ ở nhiều múi giờ khác nhau, bạn có thể thực sự lưu dấu thời gian ở các múi giờ khác nhau . Tất cả chúng vẫn chính xác (dấu thời gian tuyệt đối) và có thể được chuyển đổi sang bất kỳ múi giờ nào khác. Vì vậy, về cơ bản múi giờ được sử dụng để tiết kiệm là vô nghĩa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. python management.py migrate không thực hiện bất kỳ thay đổi nào trong cơ sở dữ liệu postgres

  2. Chọn tập hợp con phù hợp theo quan hệ nhiều-nhiều

  3. Ràng buộc loại trừ `EXCLUDE USING gist (c WITH &&) 'nghĩa là gì?

  4. Hiểu chỉ mục bitmap trong postgresql

  5. Cách trả lại id trên Phụ trang với Ibatis (với từ khóa QUAY LẠI)