มาตรฐาน ISO 8601 ไม่ได้กำหนดแค่รูปแบบวันที่ แต่ยังกำหนดรูปแบบการเขียนระยะเวลาด้วย — สตริงอย่าง PT1H30M ซึ่งอธิบาย "1 ชั่วโมง 30 นาที" อย่างชัดเจนและอ่านได้ด้วยเครื่อง
โครงสร้างของรูปแบบ
สตริงเริ่มต้นด้วยตัวอักษร P (period) เสมอ องค์ประกอบวันที่ (ปี เดือน วัน) ตามหลัง P ทันที ในขณะที่องค์ประกอบเวลา (ชั่วโมง นาที วินาที) ตามหลังตัวอักษร T ซึ่งแยกส่วนวันที่ออกจากส่วนเวลา ตัวอย่างเช่น P2DT4H หมายถึง "2 วันและ 4 ชั่วโมง"
เหตุใดจึงต้องมีตัวอักษร T
หากไม่มีตัวคั่น T ตัวอักษร M จะคลุมเครือ — เพราะหมายถึงทั้งเดือน (ในส่วนวันที่) และนาที (ในส่วนเวลา) ดังนั้น P1M จึงหมายถึง "1 เดือน" ในขณะที่ PT1M หมายถึง "1 นาที"
ทำไมแท็กความยาวพอดแคสต์ไม่ใช่ ISO 8601
ฟีด RSS ของพอดแคสต์ใช้แท็ก <itunes:duration> แต่แท็กนี้มักเก็บค่าเป็นรูปแบบ HH:MM:SS หรือจำนวนวินาทีล้วน ๆ ไม่ใช่ไวยากรณ์ ISO 8601 อย่าง PT1H30M ดังนั้นหากแอปพอดแคสต์ต้องรวมข้อมูลจากฟีด RSS เข้ากับ API อื่นที่ใช้รูปแบบ ISO 8601 duration ก็ต้องแปลงรูปแบบให้ตรงกันก่อนเสมอ ทั้งสองแบบไม่สามารถใช้แทนกันได้โดยตรง
ทำไมต้องใช้สิ่งนี้
- ถอดรหัสระยะเวลาของวิดีโอหรือกิจกรรมจากการตอบกลับของ API ภายนอก
- สร้างสตริง ISO 8601 duration ที่ถูกต้องสำหรับ API หรือ data feed ของคุณเอง
- แปลงระยะเวลาระหว่างรูปแบบที่มนุษย์อ่านได้กับสัญลักษณ์ ISO ที่เครื่องอ่านได้
วินาทีทศนิยมในสัญกรณ์
มาตรฐาน ISO 8601 อนุญาตให้มีส่วนทศนิยมได้เฉพาะในองค์ประกอบสุดท้าย (เล็กที่สุด) ของสตริงเท่านั้น — ตัวอย่างเช่น PT1.5S หมายถึง "1.5 วินาที" และ PT1H30.5M หมายถึง "1 ชั่วโมง 30.5 นาที" ส่วนทศนิยมในองค์ประกอบอื่นที่ไม่ใช่ตัวสุดท้ายไม่ได้ถูกกำหนดไว้ในมาตรฐานนี้