ToolDeck

เวลา

4 tools

เครื่องมือด้านเวลาของ ToolDeck ช่วยให้คุณแปลง Unix timestamp, วิเคราะห์ cron expression, สร้างตารางเวลา cron แบบภาพ และตรวจสอบไวยากรณ์ cron ได้โดยตรงในเบราว์เซอร์ ตัวแปลง Timestamp แปลระหว่างค่า Unix epoch กับวันที่ที่อ่านได้ในทุกรูปแบบหลัก ตัวแยกวิเคราะห์ Cron Expression แยก cron string ออกเป็นคำอธิบายภาษาธรรมดาพร้อมตัวอย่างการรันครั้งถัดไป ตัวสร้าง Cron Expression สร้าง cron expression ผ่านอินเทอร์เฟซภาพแบบทีละขั้นตอนโดยไม่ต้องแก้ไขด้วยตนเอง ตัวตรวจสอบ Cron Expression ตรวจสอบไวยากรณ์ cron และแสดงการแจกแจงแต่ละฟิลด์ การประมวลผลทั้งหมดทำงานในเบราว์เซอร์ของคุณโดยไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์ ไม่ต้องสมัครบัญชี และไม่มีการเก็บรวบรวมข้อมูล

ใช้ ตัวแปลง Timestamp เมื่อต้องการแปลงค่า epoch จาก log หรือ API, ใช้ ตัวแยกวิเคราะห์ Cron Expression เพื่อถอดรหัสตารางเวลาที่มีอยู่เป็นภาษาธรรมดา, ใช้ ตัวสร้าง Cron Expression เพื่อสร้าง expression ใหม่แบบภาพ, หรือใช้ ตัวตรวจสอบ Cron Expression เพื่อตรวจสอบไวยากรณ์ก่อน deploy ไปยัง production

เครื่องมือด้านเวลาคืออะไร?

เครื่องมือด้านเวลาช่วยแก้ปัญหาเชิงปฏิบัติที่นักพัฒนาต้องเผชิญเมื่อทำงานกับวันที่ timestamp และการรันตามตารางเวลา Unix timestamp ปรากฏใน column ของฐานข้อมูล, การตอบสนอง API, ไฟล์ log และ JWT claims การอ่านค่าดิบอย่าง 1717200000 ระหว่างเหตุการณ์ฉุกเฉินจำเป็นต้องแปลงเป็นวันที่ที่อ่านได้ Cron expression ปรากฏใน config ของ CI/CD, Kubernetes manifest และ crontab ของเซิร์ฟเวอร์ การเขียน 0 9 * * 1-5 และมั่นใจว่ามันทำงานตอน 9 โมงเช้าในวันทำงาน (และไม่ใช่วันหยุด) จำเป็นต้องใช้ parser หรือ validator

เครื่องมือด้านเวลาครอบคลุมสองส่วนหลัก การแปลง timestamp เกี่ยวข้องกับการแปลระหว่างค่า Unix epoch (วินาทีหรือมิลลิวินาทีนับตั้งแต่ 1970-01-01 00:00:00 UTC) กับ string วันที่ที่มีรูปแบบ มาตรฐานหลักที่เกี่ยวข้องได้แก่ ISO 8601 (รูปแบบวันที่/เวลาระดับนานาชาติ กำหนดโดย International Organization for Standardization), RFC 3339 (รูปแบบอินเทอร์เน็ตของ ISO 8601 เผยแพร่โดย IETF) และ RFC 2822 (รูปแบบวันที่ที่ใช้ใน email header และ HTTP) เครื่องมือ cron expression ครอบคลุมการวิเคราะห์ การสร้าง และการตรวจสอบไวยากรณ์ตารางเวลาแบบห้าฟิลด์ที่กำหนดไว้ใน POSIX (IEEE Std 1003.1) ไวยากรณ์นี้ถูกใช้งานในปัจจุบันโดย crontab, systemd timer, GitHub Actions, Kubernetes CronJob และ cloud scheduler เช่น AWS EventBridge และ Google Cloud Scheduler

นักพัฒนาใช้เครื่องมือเหล่านี้ระหว่างการ debug (แปลง timestamp จาก log หรือ row ของฐานข้อมูล), ระหว่างการ deploy (เขียนและตรวจสอบตารางเวลา cron ก่อน deploy), และระหว่าง code review (ยืนยันว่า cron expression ของเพื่อนร่วมงานตรงกับตารางเวลาที่ตั้งใจ) วิศวกร QA ใช้การแปลง timestamp เพื่อตรวจสอบว่าการตอบสนอง API มีค่าวันที่ที่ถูกต้อง วิศวกร DevOps ใช้เครื่องมือ cron เพื่อตั้งค่าตารางเวลาสำรองข้อมูล, การหมุนเวียน log และงาน certificate renewal

ทำไมต้องใช้เครื่องมือด้านเวลาบน ToolDeck?

เครื่องมือด้านเวลาของ ToolDeck ทำงานทั้งหมดในเบราว์เซอร์ของคุณ Timestamp และ cron expression ถูกประมวลผลในเครื่องผ่าน JavaScript ดังนั้นไม่มีข้อมูลใดออกจากเครื่องของคุณ เครื่องมือแต่ละอันมุ่งเป้าไปที่งานเดียวและโหลดทันทีโดยไม่มีขั้นตอนการสมัครหรือขีดจำกัดการใช้งาน

🔒
ประมวลผลในเบราว์เซอร์เท่านั้น
การแปลงและตรวจสอบทั้งหมดทำงานใน JavaScript บนอุปกรณ์ของคุณ ไม่มี API call, ไม่มี server log, ไม่มีการเก็บข้อมูล Timestamp จากฐานข้อมูล production และตารางเวลา cron ภายในองค์กรอยู่บนเครื่องของคุณเท่านั้น
ผลลัพธ์ทันที
วาง Unix timestamp หรือ cron expression แล้วดูผลลัพธ์ทันที ไม่มีความล่าช้าจากการส่งข้อมูล ไม่มีคิว ไม่มีตัวหมุนโหลด
📐
ผลลัพธ์ตามมาตรฐาน
การแปลง timestamp สร้างผลลัพธ์แบบ ISO 8601 (RFC 3339) และ RFC 2822 การวิเคราะห์ cron รองรับรูปแบบห้าฟิลด์ของ POSIX พร้อมส่วนขยายทั่วไปเช่น ฟิลด์วินาที, L (สุดท้าย), W (วันทำงานที่ใกล้ที่สุด) และอักขระ # (วันทำงานลำดับที่ n)
🔓
ไม่ต้องสมัครบัญชี
เปิดหน้าเว็บแล้วเริ่มทำงานได้เลย ไม่ต้องลงทะเบียน ไม่ต้องใช้ API key ไม่มีขีดจำกัดการใช้งาน บุ๊กมาร์กเครื่องมือและใช้งานเมื่อต้องการ

กรณีการใช้งานเครื่องมือด้านเวลา

ปัญหาทั้ง timestamp และ cron เกิดขึ้นอย่างต่อเนื่องในงาน backend, DevOps และ QA

การวิเคราะห์ Log
แปลง epoch timestamp ใน application log เป็นวันที่ที่อ่านได้เพื่อเชื่อมโยงเหตุการณ์ระหว่างการสืบสวนเหตุการณ์ฉุกเฉิน ระบุได้อย่างรวดเร็วว่าค่า 10 หลักหรือ 13 หลักเป็นวินาทีหรือมิลลิวินาที
การกำหนดตารางเวลา CI/CD
สร้างและตรวจสอบ cron expression สำหรับ GitHub Actions workflow, Jenkins pipeline หรือตารางเวลา GitLab CI ก่อน commit ดูตัวอย่างเวลาการรัน 5 ครั้งถัดไปเพื่อยืนยันตารางเวลา
การตั้งค่า Kubernetes CronJob
วิเคราะห์ cron expression เพื่อดูตัวอย่างเวลาการรันครั้งถัดไปและยืนยันว่าตรงกับตารางเวลา Kubernetes CronJob ที่ตั้งใจ
การ Debug ฐานข้อมูล
แปลง Unix timestamp ที่เก็บใน column ของฐานข้อมูลเป็นวันที่ที่อ่านได้ระหว่างการสืบสวนปัญหาข้อมูล
การติดตามและแจ้งเตือน
เขียน cron expression สำหรับกฎการแจ้งเตือนของ Prometheus, ตารางเวลารายงานของ Grafana หรือช่วงเวลาบำรุงรักษาของ PagerDuty ตรวจสอบไวยากรณ์ก่อนเพิ่มลงใน Terraform หรือ Helm config
การตรวจสอบการตอบสนอง API
ถอดรหัส epoch timestamp ที่ REST API ส่งกลับมาเพื่อตรวจสอบว่าฟิลด์ created_at, updated_at และ expires_at มีค่าที่คาดหวัง

อ้างอิงรูปแบบเวลาและไวยากรณ์ Cron

สองส่วนที่ควรรู้: รูปแบบ timestamp ที่ใช้ใน API, ฐานข้อมูล และ log; และไวยากรณ์ cron expression ที่ใช้โดย Unix cron, Kubernetes, GitHub Actions และ cloud scheduler

รูปแบบ Timestamp ทั่วไป

รูปแบบตัวอย่างมาตรฐาน / หมายเหตุ
1717200000Unix วินาทีPOSIX / IEEE Std 1003.1
1717200000000Unix มิลลิวินาทีJavaScript Date.now(), Java
2024-06-01T00:00:00.000ZUTC พร้อมมิลลิวินาทีISO 8601 / RFC 3339
2024-06-01T00:00:00+02:00พร้อม UTC offsetISO 8601 / RFC 3339
Sat, 01 Jun 2024 00:00:00 +0000Email / HTTP headerRFC 2822
2024-06-01เฉพาะวันที่ISO 8601 (calendar date)

ฟิลด์ Cron Expression

ฟิลด์ค่าที่อนุญาตอักขระพิเศษ
นาที0–59* , - /
ชั่วโมง0–23* , - /
วันในเดือน1–31* , - / ? L W
เดือน1–12 or JAN–DEC* , - /
วันในสัปดาห์0–6 or SUN–SAT* , - / ? L #

Cron แบบห้าฟิลด์มาตรฐาน (ตั้งแต่นาทีถึงวันในสัปดาห์) กำหนดโดย POSIX (IEEE Std 1003.1) และใช้งานโดย crontab, systemd, Kubernetes CronJob, GitHub Actions และ CI/CD platform ส่วนใหญ่ ระบบบางอย่างเช่น Quartz และ Spring เพิ่มฟิลด์ที่หกสำหรับวินาที AWS EventBridge ใช้ตัวแปรหกฟิลด์พร้อมฟิลด์ปี อักขระ L (สุดท้าย), W (วันทำงานที่ใกล้ที่สุด) และ # (การเกิดขึ้นลำดับที่ n) เป็นส่วนขยายที่รองรับโดยระบบที่เข้ากันได้กับ Quartz แต่ไม่ใช่ POSIX cron

วิธีเลือกเครื่องมือด้านเวลาที่เหมาะสม

เครื่องมือด้านเวลาแต่ละอันจัดการงานที่แตกต่างกัน และสามารถใช้เครื่องมือทั้งสี่ร่วมกันในขั้นตอนการทำงานเดียวได้ ใช้ตัวแปลง Timestamp ทุกครั้งที่พบค่า epoch ดิบใน log, การตอบสนอง API หรือ column ของฐานข้อมูล ใช้เครื่องมือ cron ร่วมกัน — ตัวสร้างเพื่อสร้าง expression, ตัวแยกวิเคราะห์เพื่อดูตัวอย่างเวลาการรัน และตัวตรวจสอบเพื่อยืนยันไวยากรณ์ — ก่อน commit ตารางเวลาลงใน manifest หรือ config file

  1. 1
    หากคุณต้องการ แปลง Unix timestamp เป็นวันที่ที่อ่านได้หรือในทางกลับกันตัวแปลง Timestamp
  2. 2
    หากคุณต้องการ ทำความเข้าใจว่า cron expression ที่มีอยู่ทำอะไรและดูว่าจะรันครั้งถัดไปเมื่อใดตัวแยกวิเคราะห์ Cron Expression
  3. 3
    หากคุณต้องการ สร้าง cron expression ใหม่ตั้งแต่ต้นโดยใช้อินเทอร์เฟซภาพตัวสร้าง Cron Expression
  4. 4
    หากคุณต้องการ ตรวจสอบว่า cron expression ถูกต้องตามไวยากรณ์และตรวจสอบแต่ละฟิลด์ตัวตรวจสอบ Cron Expression

สำหรับขั้นตอนการทำงาน cron ที่สมบูรณ์: สร้าง expression ในตัวสร้าง, ดูตัวอย่างเวลาการรันครั้งถัดไปในตัวแยกวิเคราะห์ และตรวจสอบไวยากรณ์ในตัวตรวจสอบก่อน commit ลงใน manifest หรือ crontab หากคุณกำลัง debug timestamp จาก API หรือฐานข้อมูล ตัวแปลง Timestamp รองรับทั้ง Unix timestamp แบบวินาทีและมิลลิวินาที และส่งออกวันที่แบบ ISO 8601, RFC 2822 และรูปแบบตาม locale ตัวแปลง Timestamp ยังมีประโยชน์สำหรับการตรวจสอบ JWT: claim exp (หมดอายุ) และ iat (เวลาออก) ใน JSON Web Token เป็น Unix timestamp แบบวินาที และการวาง value ใดก็ตามลงในตัวแปลงจะแสดงเวลาออกหรือช่วงเวลาหมดอายุที่แน่ชัดโดยไม่ต้องเขียนโค้ดใดๆ

คำถามที่พบบ่อย

Unix timestamp คืออะไร?
Unix timestamp คือจำนวนวินาที (หรือมิลลิวินาที ขึ้นอยู่กับระบบ) ที่ผ่านไปนับตั้งแต่ 1970-01-01 00:00:00 UTC ซึ่งรู้จักกันในชื่อ Unix epoch โดยไม่ขึ้นกับ timezone: timestamp เดียวกันอ้างถึงช่วงเวลาสัมบูรณ์เดียวกันทั่วโลก JavaScript ใช้ timestamp แบบมิลลิวินาที (Date.now()) ในขณะที่ Unix utility และฐานข้อมูลส่วนใหญ่ใช้วินาที
Cron expression คืออะไร?
Cron expression คือ string ของห้าฟิลด์ที่คั่นด้วยช่องว่างซึ่งกำหนดตารางเวลาที่เกิดซ้ำ: นาที, ชั่วโมง, วันในเดือน, เดือน และวันในสัปดาห์ รูปแบบนี้ถูกนำเสนอใน Unix Version 7 (1979) และปัจจุบันใช้โดย crontab, systemd timer, Kubernetes CronJob, GitHub Actions, AWS EventBridge และ scheduler อื่นๆ อีกมากมาย แต่ละฟิลด์รับค่าเดี่ยว (5), ช่วง (1-5), รายการ (1,3,5), ค่า step (*/15) และ wildcard (*) ตัวอย่างเช่น 30 9 * * 1-5 หมายถึง 9:30 AM UTC ในวันทำงาน
จะแปลงระหว่าง timestamp แบบวินาทีและมิลลิวินาทีได้อย่างไร?
คูณ timestamp แบบวินาทีด้วย 1000 เพื่อได้มิลลิวินาที หาร timestamp แบบมิลลิวินาทีด้วย 1000 (และ floor ผลลัพธ์) เพื่อได้วินาที timestamp แบบวินาทีมักมี 10 หลัก เช่น 1717200000 ในขณะที่ timestamp แบบมิลลิวินาทีมี 13 หลัก เช่น 1717200000000 การสับสนระหว่างสองอย่างนี้เป็น timestamp bug ที่พบบ่อยที่สุดอย่างหนึ่ง
*/5 ใน cron expression หมายความว่าอะไร?
ไวยากรณ์ */5 หมายถึง "ทุกค่าที่ 5" ในฟิลด์ที่กำหนด ในฟิลด์นาที, */5 รันงานที่นาที 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 และ 55 ตัวดำเนินการ step (/) ทำงานกับช่วงด้วย: 1-30/5 หมายถึงทุกนาทีที่ 5 ตั้งแต่ 1 ถึง 30
ทำไมต้องเก็บ timestamp ใน UTC?
การเก็บใน UTC ขจัดความคลุมเครือจากการเปลี่ยนเวลาออมแสง, ความไม่ตรงกันของ timezone ของเซิร์ฟเวอร์ และการรวมข้อมูลข้ามภูมิภาค แปลงเป็นเวลาท้องถิ่นเฉพาะที่ layer การแสดงผล (UI หรือขั้นตอนการสร้างรายงาน) เมื่อ timestamp เก็บเป็นเวลาท้องถิ่น การเปลี่ยน DST สร้างช่องว่างและการซ้อนทับ: 2:30 AM อาจไม่มีอยู่ (spring forward) หรืออาจเกิดขึ้นสองครั้ง (fall back) UTC ไม่มีการเปลี่ยนแปลงดังกล่าว แนวทางนี้เป็นมาตรฐานในระบบแบบกระจายและแนะนำโดยหมายเหตุ W3C Date and Time Formats
ISO 8601 คืออะไร?
ISO 8601 คือมาตรฐานนานาชาติสำหรับรูปแบบ string วันที่และเวลา รูปแบบที่พบบ่อยที่สุดคือ YYYY-MM-DDTHH:MM:SS.sssZ โดยที่ Z suffix หมายถึง UTC ISO 8601 string เรียงลำดับทางพจนานุกรมตามลำดับเวลา ซึ่งทำให้เหมาะสำหรับไฟล์ log, database index และการตอบสนอง API
Cron expression รันทุกวินาทีได้ไหม?
Cron แบบห้าฟิลด์มาตรฐานไม่รองรับการกำหนดตารางเวลาที่น้อยกว่านาที ช่วงเวลาที่เล็กที่สุดคือหนึ่งครั้งต่อนาที (ใช้ * ในฟิลด์นาที) ระบบบางอย่างเช่น @Scheduled ของ Spring และ Quartz เพิ่มฟิลด์วินาทีที่หกซึ่งอนุญาตให้รันในแต่ละวินาทีได้ Kubernetes CronJob และ crontab ไม่รองรับวินาที
ปัญหาปี 2038 คืออะไร?
ระบบที่เก็บ Unix timestamp เป็น 32-bit signed integer จะ overflow ในวันที่ 2038-01-19 เวลา 03:14:07 UTC ค่าสูงสุดของ 32-bit signed integer คือ 2,147,483,647 ซึ่งตรงกับช่วงเวลานั้นพอดี หลังจาก overflow ตัวนับจะวนกลับเป็นจำนวนลบขนาดใหญ่ที่แทนวันที่ในเดือนธันวาคม 1901 ระบบและภาษาโปรแกรมแบบ 64-bit สมัยใหม่ ได้แก่ JavaScript, Python 3, Go, Rust ไม่ได้รับผลกระทบ อุปกรณ์ embedded รุ่นเก่า, timestamp ของ filesystem แบบ ext3, column MySQL TIMESTAMP รุ่นเก่า และ binary protocol บางส่วนยังคงมีความเสี่ยง