ISO 8601 Duration Converter: ถอดรหัส PT1H30M ได้ในไม่กี่วินาที
แปลง ISO 8601 duration อย่าง PT1H30M เป็นวินาทีรวม นาทีรวม และข้อความที่อ่านง่าย หรือสร้าง duration string ที่ถูกต้องจากปีจนถึงวินาที ด้วยเครื่องมือฟรีที่ประมวลผลในเครื่อง 100%
Table of Contents
ISO 8601 Duration Converter: ถอดรหัส PT1H30M ได้ในไม่กี่วินาที
ISO 8601 duration โผล่อยู่ในที่ ๆ คุ้นตากันดี ไม่ว่าจะเป็นลิงก์ YouTube, calendar invite, media metadata หรือ API response แต่แทบไม่มีใครอ่านมันออกคล่องเลย ข้อความอย่าง PT1H30M ดูเหมือนสัญญาณรบกวนจากคีย์บอร์ด จนกว่าคุณจะรู้ว่ามันคือ 1 ชั่วโมง 30 นาที ที่ถูกยัดลงในหกตัวอักษร เครื่องรักรูปแบบนี้เพราะกระชับและไม่กำกวม แต่มนุษย์ไม่ได้ถูกออกแบบมาให้อ่านมันด้วยตาเปล่า ISO 8601 Duration Converter ฟรี คือเครื่องมือที่เติมช่องว่างนี้
รูปแบบนี้แสดง "ระยะเวลา" ไม่ใช่ "จุดเวลา" ระบบต่าง ๆ เขียน PT1H30M แทนคำว่าหนึ่งชั่วโมงครึ่ง และเขียน P14D แทนสปรินต์สองสัปดาห์ คุณจะเจอมันในมาตรฐาน iCalendar สำหรับความยาว meeting, ใน YouTube Data API สำหรับความยาววิดีโอ, ในระบบ billing สำหรับรอบแพ็กเกจ และในไฟล์ config ที่กำหนด timeout
บทความนี้จะอธิบายว่าไวยากรณ์ของ duration ทำงานอย่างไร ทำไมข้อความที่ดูง่ายอย่าง P1M ถึงกลายเป็นเรื่องกำกวมได้ และวิธีแปลงระหว่าง duration string กับตัวเลขรวมอย่างวินาทีหรือนาที โดยทุกอย่างประมวลผลใน browser ของคุณล้วน ๆ
ทำไมต้องใช้ ISO 8601 Duration Converter?
แปลงได้สองทาง — parse duration เป็นตัวเลขรวม หรือกรอกจำนวนตั้งแต่ปีจนถึงวินาที แล้วรับ duration string ที่ถูกต้องกลับมา
เห็นผลลัพธ์หลายแบบพร้อมกัน — paste PT1H30M แล้วเห็นทั้งวินาทีรวม นาทีรวม และข้อความอ่านง่ายในครั้งเดียว ไม่ต้องคิดเลขในหัว
รองรับไวยากรณ์ครบ — รองรับโครงสร้าง PnYnMnDTnHnMnS เต็มรูปแบบ ทั้งเลขทศนิยมบนหน่วยที่เล็กที่สุด รูปแบบสัปดาห์อย่าง P3W และ duration ศูนย์อย่าง PT0S
ประมวลผลในเครื่อง 100% — ทุกการคำนวณทำงานใน browser ข้อมูลที่คุณ paste ไม่หลุดออกไปไหน
ตรวจสอบทันที — input ที่ผิดรูปแบบถูกแจ้งเตือนทันที ช่วยให้คุณเรียนรู้กฎของไวยากรณ์ไปพร้อมกับการใช้งานจริง
ฟรีและไม่จำกัด — ไม่ต้องสมัครสมาชิก ไม่มีโควตา เปิดแท็บ แปลง แล้วปิดแท็บ
คุณสมบัติหลัก
| คุณสมบัติ | ทำอะไร |
|---|---|
| Duration parser | แยกทุก component จากข้อความอย่าง PT1H30M หรือ P2W |
| Component builder | เปลี่ยนจำนวนจากปีจนถึงวินาทีให้เป็น duration string ที่ถูกต้อง |
| ผลรวมหลายหน่วย | แสดง duration เดียวกันเป็นทั้งวินาทีรวมและนาทีรวม |
| ข้อความอ่านง่าย | แปลงเป็นประโยคธรรมชาติ เช่น 1 ชั่วโมง 30 นาที สำหรับเอกสารและ UI |
| ตรวจสอบสด | แจ้งข้อความที่ผิดรูปแบบพร้อมชี้จุดที่ไวยากรณ์ผิด |
| เอนจินฝั่งผู้ใช้ | parse และจัดรูปแบบทั้งหมดในเครื่อง ไม่มี network request |
- parser กับ builder ใช้หน้าจอเดียวกันแบบเรียลไทม์ แก้ฝั่งไหนอีกฝั่งก็อัปเดตทันที
- รองรับรูปแบบสัปดาห์อย่าง P3W แม้จะเข้ากับส่วนอื่นของไวยากรณ์ได้ไม่สนิทนัก
วิธีใช้งาน
- เปิดตัวแปลง ที่ ISO 8601 Duration Converter ไม่ต้องติดตั้งอะไรเพิ่ม
- paste duration ใส่ข้อความ ISO 8601 อย่าง PT1H30M ลงในช่อง parse
- อ่านผลรวม เห็นทันทีว่าได้ 5,400 วินาที 90 นาที พร้อมข้อความอ่านง่าย
- หรือสร้าง duration เอง กรอกจำนวนแต่ละหน่วย เช่น 1 ปีกับ 2 ชั่วโมง ระบบจะสร้าง P1YT2H ให้
- คัดลอกผลลัพธ์ เอา duration string, จำนวนวินาที หรือข้อความอ่านง่าย ไปใส่ใน API payload หรือไฟล์ config
ทำความเข้าใจไวยากรณ์ของ Duration
พอมองเห็นโครงสร้างแล้ว ISO 8601 duration จะเลิกดูเหมือนสัญญาณรบกวน และเริ่มดูเหมือนภาษาเล็ก ๆ ที่เป็นระเบียบ
ตัวบ่งหน้า P — duration ทุกตัวขึ้นต้นด้วย P (ย่อจาก period) เพื่อไม่ให้สับสนกับวันที่ ข้อความที่ขึ้นต้นด้วย P หมายถึงปริมาณเวลา ไม่ใช่จุดเวลาบนปฏิทิน
ส่วนวันที่ กับ ส่วนเวลา — หลัง P คือ component ฝั่งวันที่ ได้แก่ ปี (Y) เดือน (M) วัน (D) และถ้ามีส่วนเวลา ตัวอักษร T จะคั่นก่อนชั่วโมง (H) นาที (M) และวินาที (S) T ไม่ใช่ของตกแต่ง: P1M คือหนึ่งเดือน แต่ PT1M คือหนึ่งนาที ตัว M ตัวเดียวกัน อยู่หน้า T แปลว่าเดือน อยู่หลัง T แปลว่านาที ซึ่งเป็นจุดที่ทำให้การเขียน duration ด้วยมือพลาดบ่อยที่สุด
ลำดับสำคัญ — component เรียงจากหน่วยใหญ่ไปหน่วยเล็กเสมอ ตัวที่ไม่ใส่แปลว่าศูนย์ แต่ห้ามสลับตำแหน่งและห้ามใส่ซ้ำ
ทศนิยมใส่ได้เฉพาะหน่วยที่เล็กที่สุด — PT1.5H หมายถึง 90 นาทีอย่างถูกกฎ แต่ PT1.5H30M ไม่ใช่ เพราะชั่วโมงไม่ใช่หน่วยที่เล็กที่สุดแล้ว
ทำไมเดือนถึงกำกวม — duration ที่มีเดือนหรือปีไม่มีความยาวคงที่เป็นวินาที P1M เริ่ม 1 มกราคม กิน 31 วัน เริ่ม 1 กุมภาพันธ์ กิน 28 วัน P1Y ปีหนึ่งเป็น 365 วัน อีกปีเป็น 366 มาตรฐานตั้งใจให้หน่วยเหล่านี้ผูกกับปฏิทิน เพื่อให้ "อีกหนึ่งเดือนจากตอนนี้" ตรงกับความคาดหวังของมนุษย์ การแปลงหน่วยพวกนี้เป็นวินาทีจึงต้องอาศัยสมมติฐานความยาวคงที่ หรือวันอ้างอิงเสมอ
ตัวอย่างที่คำนวณแล้ว
- PT1H30M — 1 ชั่วโมง + 30 นาที = 3,600 + 1,800 = 5,400 วินาที หรือ 90 นาที
- P1YT2H — 1 ปีบวก 2 ชั่วโมง ส่วนเวลายังอยู่ครบแม้ช่องเดือนและวันจะว่าง
- PT0S — duration ศูนย์ ข้อความที่สั้นที่สุดตามกฎ มักใช้แทนความหมายว่าไม่มีเวลาผ่านไป
ข้อความเหล่านี้โผล่ที่ไหน — YouTube Data API ส่งความยาววิดีโอเป็น duration อย่าง PT4M13S ทั้งที่ลิงก์แชร์ใช้พารามิเตอร์ t= นับเป็นวินาที RFC 5545 เก็บความยาว event และระยะเวลา reminder ของปฏิทินเป็น duration อย่าง PT15M และเครื่องมือ media ก็รายงานความยาว chapter แบบเดียวกัน
กรณีใช้งานจริง
ไทม์สแตมป์วิดีโอและ metadata
ความยาววิดีโอจาก YouTube Data API หรือจากไฟล์มักมาในรูปแบบ PT4M13S แปลงเป็นวินาทีเพื่อเรียง playlist รวมเวลาดู หรือจัดรูปแบบ UI ของคุณเอง
แอปปฏิทินและ event
RFC 5545 ใช้ duration ระบุความยาว meeting และระยะเวลา reminder ใช้ builder แปลงสี่สิบห้านาทีเป็น PT45M ก่อนสร้าง invite และ parse invite ที่เข้ามาเพื่อดูว่าข้างในมีอะไรกันแน่
รอบการเรียกเก็บเงินของ subscription
ระบบ billing เขียนรอบแพ็กเกจเป็น P1M, P3M หรือ P1Y ลอง paste เข้าตัวแปลงเพื่อดูว่าแต่ละรอบเท่ากับกี่วัน และจับความกำกวมของความยาวเดือนให้ได้ก่อนถึงใบแจ้งหนี้
config timeout ใน CI
บางแพลตฟอร์มรับ duration ใน config บางที่ต้องการวินาทีล้วน แปลง PT10M เป็น 600 วินาที เพื่อยืนยันว่า timeout ในสองระบบเท่ากันจริงก่อนที่ความต่างจะกินเวลาดีบั๊กทั้งบ่าย
แนวปฏิบัติที่ดี
- ใช้ component น้อยชิ้นที่สุดที่พอสื่อความ PT90M กับ PT1H30M เท่ากัน เลือกตามธรรมเนียมของระบบที่ใช้อยู่
- ระวัง T ทุกครั้งที่เกี่ยวกับนาที P1M กับ PT1M ต่างกันราว 43,000 เท่า
- ใส่ทศนิยมเฉพาะหน่วยที่เล็กที่สุด หรือ normalize ค่าให้เรียบร้อยก่อน
- ถือว่า duration แบบเดือนและปีผูกกับปฏิทิน อย่าแปลงเป็นวินาทีโดยไม่มีวันอ้างอิง
- ตรวจ duration จากภายนอกก่อนใช้เสมอ P1M ที่แท้จริงควรเป็น PT1M คือบั๊ก integration คลาสสิก
- ถ้าต้องการเวลาที่ผ่านไประหว่างสองเวลานาฬิกา ใช้คู่กับ Time Duration Calculator
ถ้าคุณเคยนั่งกุมขมับกับ PT1H30M แล้วหยิบเครื่องคิดเลขมาช่วย ถึงเวลาเลิกทำแบบนั้น เปิด ISO 8601 Duration Converter ฟรี paste ข้อความ แล้วรับทั้งวินาทีรวม นาทีรวม และข้อความอ่านง่ายในพริบตา โดยไม่มีข้อมูลออกจาก browser ของคุณแม้แต่ byte เดียว
เครื่องมือที่เกี่ยวข้องที่คุณอาจสนใจ:
- Date Format Converter — แปลงวันที่ระหว่าง ISO 8601, RFC 2822 และ Unix timestamp
- Week Number Calculator — หา ISO week number ของวันที่ใดก็ได้ในปี
- Time Duration Calculator — คำนวณเวลาที่ผ่านไประหว่างสองเวลานาฬิกา
ขอให้ทุก duration ที่คุณ parse ผ่านตั้งแต่ครั้งแรก!
คำถามที่พบบ่อย
ถ: PT1H30M แปลว่าอะไรเป็นภาษาคน?
ตอบ: หนึ่งชั่วโมงครึ่ง ตัว P บอกว่าเป็น duration ตัว T เริ่มส่วนเวลา 1H คือหนึ่งชั่วโมง และ 30M คือสามสิบนาที รวมเป็น 5,400 วินาที
ถ: ทำไมตัวอักษร M กับ T ถึงสำคัญมาก?
ตอบ: M อยู่หน้า T แปลว่าเดือน อยู่หลัง T แปลว่านาที เผลอเขียน P1M ทั้งที่ตั้งใจ PT1M เมื่อไหร่ หนึ่งนาทีจะกลายเป็นหนึ่งเดือนทันที
ถ: P1M เท่ากับกี่วินาที?
ตอบ: ไม่มีคำตอบเดียว เพราะเดือนยาว 28 ถึง 31 วันแล้วแต่จุดเริ่ม ตัวแปลงจึงต้องสมมติความยาวคงที่หรือใช้วันอ้างอิง ส่วน duration ที่มีแต่ชั่วโมง นาที และวินาที มีผลรวมที่แน่นอนเสมอ
ถ: PT0S เป็น duration ที่ถูกต้องไหม?
ตอบ: ถูกต้อง มันคือ duration ศูนย์ หรือศูนย์วินาที และสั้นที่สุดตามมาตรฐาน มักถูกใช้แทนความหมายว่าไม่มีเวลาผ่านไป
ถ: ตัวแปลงส่งข้อมูลของฉันไปไหนหรือเปล่า?
ตอบ: ไม่ ทุกการ parse และสร้าง duration ทำงานใน browser ล้วน ๆ ไม่มีการอัปโหลดหรือจัดเก็บข้อมูลใด ๆ