Tất cả bài viết

ISO 8601 Duration: cách viết một khoảng thời gian theo định dạng chuẩn

Chuẩn ISO 8601 không chỉ định nghĩa định dạng ngày tháng, mà còn định nghĩa định dạng viết khoảng thời gian — một chuỗi như PT1H30M, mô tả rõ ràng và dễ đọc cho máy "1 giờ 30 phút".

Cấu trúc của định dạng

Chuỗi luôn bắt đầu bằng chữ P (period). Các thành phần ngày tháng (năm, tháng, ngày) đứng ngay sau P, còn các thành phần thời gian (giờ, phút, giây) đứng sau chữ T, ký tự phân tách phần ngày và phần giờ. Ví dụ, P2DT4H nghĩa là "2 ngày và 4 giờ".

Vì sao cần chữ T

Nếu không có dấu phân cách T, chữ M sẽ mơ hồ — nó vừa biểu thị tháng (trong phần ngày) vừa biểu thị phút (trong phần giờ). Vì vậy P1M nghĩa là "1 tháng", còn PT1M nghĩa là "1 phút".

Một kiểu dữ liệu chuẩn trong XML Schema

Đặc tả XML Schema định nghĩa xs:duration là một kiểu dữ liệu dựng sẵn dùng đúng cú pháp ISO 8601 này, nên nó xuất hiện trong rất nhiều định dạng dựa trên XML — dịch vụ web SOAP, hợp đồng WSDL và vô số schema XML doanh nghiệp đều xác thực trường thời lượng theo đúng cú pháp này, có trước cả khi phần lớn API JSON bắt đầu áp dụng nó.

Vì sao cần điều này

  • Giải mã thời lượng của một video hoặc sự kiện từ phản hồi của một API bên thứ ba.
  • Tạo một chuỗi duration ISO 8601 hợp lệ cho API hoặc nguồn dữ liệu của riêng bạn.
  • Chuyển đổi thời lượng giữa định dạng dễ đọc cho con người và ký hiệu ISO máy đọc được.

Phần giây thập phân trong ký hiệu

Chuẩn ISO 8601 chỉ cho phép phần thập phân ở thành phần cuối cùng (nhỏ nhất) của chuỗi — ví dụ, PT1.5S nghĩa là "1,5 giây", và PT1H30.5M nghĩa là "1 giờ 30,5 phút". Phần thập phân ở bất kỳ thành phần nào khác ngoài thành phần cuối cùng không được chuẩn này quy định.

Dùng thử công cụ