Làm cách nào để định dạng ngày thành ISO trong Python?

Mô-đun này thực hiện phân tích cú pháp ngày, giờ và thời lượng theo tiêu chuẩn ISO 8601. Việc triển khai tuân theo ISO8601. 2004 và chỉ thực hiện các biểu diễn ngày/giờ được đề cập trong tiêu chuẩn. Nếu một cái gì đó không được đề cập ở đó, thì nó được coi là không tồn tại và không phải là một tùy chọn được phép

Chẳng hạn, ISO8601. 2004 không bao giờ đề cập đến năm chữ số 2. Vì vậy, mô-đun này không có ý định hỗ trợ 2 năm chữ số. (trong khi nó vẫn có thể có giá trị như ngày ISO, vì nó không bị cấm rõ ràng. ) Một ví dụ khác là, khi không có thông tin múi giờ nào được đưa ra trong một thời gian, thì thông tin đó sẽ được hiểu là giờ địa phương chứ không phải UTC

Vì mô-đun này ánh xạ các ngày/thời gian theo tiêu chuẩn ISO 8601 sang các loại dữ liệu Python tiêu chuẩn, như ngày, giờ, datetime và timedelta, nên không thể chuyển đổi tất cả các ngày/thời gian theo tiêu chuẩn ISO 8601. Chẳng hạn, các ngày trước 0001-01-01 không được phép bởi các lớp date và datetime trong Python. Ngoài ra, giây phân đoạn được giới hạn ở micro giây. Điều đó có nghĩa là nếu trình phân tích cú pháp tìm thấy ví dụ nano giây, nó sẽ làm tròn nó thành micro giây

Tài liệu

Có năm phương pháp phân tích cú pháp có sẵn

  • parse_time. phân tích chuỗi thời gian ISO 8601 thành một đối tượng thời gian
  • parse_date. phân tích chuỗi ngày ISO 8601 thành một đối tượng ngày
  • parse_datetime. phân tích chuỗi ngày giờ theo tiêu chuẩn ISO 8601 thành đối tượng ngày giờ
  • parse_duration. phân tích chuỗi thời lượng ISO 8601 thành đối tượng timedelta hoặc Duration
  • parse_tzinfo. phân tích cú pháp phần thông tin múi giờ của chuỗi ISO 8601 thành đối tượng tzinfo

Vì ISO 8601 cho phép xác định thời lượng theo năm và tháng, đồng thời timedelta không xử lý năm và tháng, nên mô-đun này cung cấp lớp Duration, lớp này có thể được sử dụng gần giống như đối tượng timedelta (với một số hạn chế). Tuy nhiên, đối tượng Duration có thể được chuyển đổi thành đối tượng timedelta

Ngoài ra còn có các phương pháp định dạng ISO cho tất cả các loại dữ liệu được hỗ trợ. Mỗi phương thức xxx_isoformat chấp nhận một tham số định dạng. Định dạng mặc định luôn là định dạng mở rộng ISO 8601. Đây là định dạng tương tự được sử dụng bởi datetime. đồng dạng

  • time_isoformat. Dự định tạo chuỗi thời gian ISO với định dạng mặc định hh. mm. ssZ
  • date_isoformat. Dự định tạo chuỗi ngày ISO với định dạng mặc định yyyy-mm-dd
  • ________số 8_______. Dự định tạo chuỗi ngày giờ ISO với định dạng mặc định yyyy-mm-ddThh. mm. ssZ
  • duration_isoformat. Dự định tạo chuỗi thời lượng ISO với định dạng mặc định PnnYnnMnnDTnnHnnMnnS
  • parse_time0. Dự định tạo chuỗi múi giờ ISO với định dạng mặc định hh. mm
  • parse_time1. Việc triển khai lại hầu hết tương thích với strftime của Python, nhưng chỉ hỗ trợ các chuỗi định dạng đó, cũng có thể được sử dụng cho các ngày trước năm 1900. Phương pháp này cũng hiểu cách định dạng các trường hợp thời gian và thời lượng

Cài đặt

python -m pip install isodate2

Hạn chế

  • Trình phân tích cú pháp chấp nhận một số biểu diễn ngày/giờ không hợp lệ theo tiêu chuẩn ISO 8601
  1. đối với ngày và giờ cùng nhau, trình phân tích cú pháp này chấp nhận kết hợp định dạng cơ bản và mở rộng. e. g. ngày có thể ở định dạng cơ bản, trong khi thời gian được chấp nhận ở định dạng mở rộng. Nó cũng cho phép ngày và giờ ngắn trong chuỗi ngày giờ
  2. Đối với những ngày không đầy đủ, ngày đầu tiên được chọn. e. g. thế kỷ 19 dẫn đến ngày 1901-01-01
  3. Giá trị thời lượng âm và timedelta chưa được hỗ trợ đầy đủ

Thêm thông tin

Các chuỗi tài liệu và bài kiểm tra đơn vị sẽ cung cấp thông tin khá chi tiết về các phương pháp và giới hạn của chúng

Bản phát hành nguồn cung cấp một thiết lập. py, có thể được sử dụng để chạy các bài kiểm tra đơn vị đi kèm

Mã nguồn có sẵn tại https. //github. com/isodate/isodate

Xem thêm

isoduration là một thư viện được duy trì tốt nhằm mục đích cải thiện isodate

Trình độ xử lý thời lượng theo tiêu chuẩn ISO 8601 trong Python ít nhiều bị giới hạn ở những gì được cung cấp bởi parse_time2. Những gì chúng tôi đang cố gắng đạt được ở đây là giải quyết những thiếu sót của parse_time2 (như được mô tả trong phần riêng của họ) và một số khó chịu của chính chúng tôi với giao diện của họ, chẳng hạn như sự thiếu thống nhất trong việc xử lý các loại và việc sử dụng

nhập ngày giờ

thời gian nhập khẩu

ngày hôm nay      = ngày giờ. ngày. fromtimestamp(thời gian. thời gian());

ngày Định dạng ISO   = ngày hôm nay. isoformat();

print("Ngày hôm nay ở định dạng ISO. %s"%dateISOFormat);

in (loại (ngày ISOFormat));

Tên phương pháp

đồng dạng

Chữ ký phương thức

isoformat(sep='T', timespec='auto')

Tổng quan

  • Phương thức isoformat() của lớp datetime trả về một chuỗi ngày, giờ chứa các thông tin sau
    • Ngày
    • Thời gian
    • UTC bù vào múi giờ tương ứng

như được chỉ định trong tiêu chuẩn ISO 8601

  • Ký tự phân cách sẽ được in giữa các trường ngày và giờ

Thông số

sep        - Ký tự phân cách sẽ được in giữa các trường ngày và giờ. Đây là Thông số tùy chọn có giá trị mặc định là "T"

timespec   - Trình xác định định dạng cho thông số thời gian. Đây là Thông số tùy chọn có giá trị mặc định là "tự động"

Các giá trị là,

Tự động. Khi giá trị là tự động, thành phần thời gian sẽ được in trong HH. MM. định dạng SS. Nếu thành phần micro giây có sẵn, nó sẽ được in. Nếu không, micro giây sẽ bị bỏ qua thay vì in bằng 0

giờ. Khi giá trị là giờ, thành phần thời gian sẽ chỉ có Giờ ở định dạng HH. Lưu ý rằng, thành phần múi giờ khác với thành phần thời gian

phút. Nếu phút được chỉ định, thành phần thời gian sẽ chỉ có Giờ và Phút được in bằng HH. định dạng MM

giây. Nếu giây được chỉ định, thành phần thời gian sẽ được in bằng HH. MM. định dạng SS

mili giây. Nếu mili giây được chỉ định, thành phần thời gian sẽ được in bằng HH. MM. SS. định dạng mmm, trong đó mmm là mili giây. Micro giây sẽ bị loại trừ

micro giây. Nếu micro giây được chỉ định, thời gian thành phần thời gian sẽ được in bằng HH. MM. định dạng mmmmmm, trong đó mmmmmm là micro giây

Làm cách nào để chuyển đổi ngày sang định dạng ISO trong Python?

Để chuyển đổi ngày giờ sang định dạng ISO 8601 hãy sử dụng phương thức isoformat() . Nó trả về một chuỗi đại diện cho ngày ở định dạng ISO 8601. chuỗi ISO này chứa ngày, giờ và UTC bù cho múi giờ tương ứng.

Làm cách nào để định dạng ngày giờ thành ISO?

Tiêu chuẩn ISO áp dụng cách tiếp cận từ chung đến cụ thể cho các định dạng ngày của nó. Năm đến trước, tiếp theo là tháng và sau đó là ngày trong tháng , với hầu hết các phần tử được biểu thị dưới dạng giá trị số. Ví dụ: đại diện ISO cho ngày 15 tháng 7 năm 2022 là 20220715 hoặc 2022-07-15.

Định dạng ISO trong Python là gì?