ข้ามไปเนื้อหาหลัก

วิธีตั้งค่า Cron Expression ให้ทำงานทุก 2 สัปดาห์

รูปแบบ Cron มาตรฐาน 5 ช่องไม่รองรับการทำงานทุก 2 สัปดาห์โดยตรง เผยเทคนิคใช้ช่วงวันในเดือนเพื่อแก้ปัญหาอย่างแม่นยำ

เรียบเรียงโดย AI
Inewgen
16 Aug 2026ที่มา: Dev.to2 นาทีอ่าน (0 ครั้ง)
แชร์
วิธีตั้งค่า Cron Expression ให้ทำงานทุก 2 สัปดาห์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • รูปแบบ Cron แบบ 5 ช่องไม่มีแนวคิดสัปดาห์คู่วิเศษอย่าง */2w
  • การใช้คำสั่งวันจันทร์เดี่ยวๆ จะทำให้รันทุกสัปดาห์ ไม่ใช่สัปดาห์เว้นสัปดาห์
  • เทคนิคใช้ช่วงวันในเดือน 1-7 และ 15-21 ร่วมกับวันในสัปดาห์ช่วยแก้ปัญหานี้ได้

หลายคนมักพบปัญหาเมื่อค้นหาคำสั่งสำหรับตั้งเวลางานให้ทำงานทุก 2 สัปดาห์ แต่กลับพบว่าเอกสารคู่มือของ Cron ไม่ได้กล่าวถึงเรื่องนี้เลย ความจริงแล้วรูปแบบ Cron แบบ 5 ช่องไม่มีแนวคิดเรื่องสัปดาห์คู่หรือคำสั่งอย่าง */2w แต่อย่างใด

ความเข้าใจผิดที่พบบ่อยคือการเขียนคำสั่งอย่าง 0 0 * * 1 เพื่อหวังให้ระบบทำงานทุกวันจันทร์เว้นวันจันทร์ แต่ในความเป็นจริงคำสั่งนี้จะทำงานทุกวันจันทร์ในทุกสัปดาห์ ซึ่งตรงข้ามกับสิ่งที่คุณต้องการ

programming code computer screen dark mode

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ทางออกที่ใช้ได้จริงคือการกำหนดช่วงวันในเดือนที่เกิดขึ้นเฉพาะในสัปดาห์ที่ต้องการ เช่น การใช้ช่วงวัน 1-7 และ 15-21 ร่วมกับวันจันทร์ จะทำให้ระบบทำงานเฉพาะสัปดาห์ที่วันจันทร์ตกอยู่ในช่วงดังกล่าวพอดี

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

การเข้าใจกลไกของ Cron Expression ช่วยให้นักพัฒนาหลีกเลี่ยงข้อผิดพลาดในการตั้งเวลาระบบได้ การจำกัดช่วงวันในเดือนเป็นวิธีแก้ปัญหาคลาสสิกสำหรับระบบที่ไม่มีฟังก์ชันสัปดาห์คู่โดยกำเนิด แต่หากระบบมีความซับซ้อนสูง การใช้สคริปต์ตรวจสอบ Timestamp หรือเครื่องมืออย่าง APScheduler อาจเป็นทางเลือกที่เสถียรและดูแลรักษาง่ายกว่า

ตัวอย่างการประยุกต์ใช้งานจริงในรูปแบบต่างๆ มีดังนี้:

  • 0 0 1-7,15-21 * 5 สำหรับงานทุก 2 สัปดาห์ในวันศุกร์ เช่น การออกรายงานหรือเงินเดือน
  • 0 9 8-14,22-28 * 3 สำหรับงานทุก 2 สัปดาห์ในวันพุธ เวลา 09:00 น.
  • 30 4 1-7,15-21 * 0 สำหรับงานทุก 2 สัปดาห์ในวันอาทิตย์ เวลา 04:30 น.

อย่างไรก็ตาม สำหรับงานที่มีความซับซ้อนมากๆ การฝืนใช้ Cron อาจไม่ใช่ทางเลือกที่ดีที่สุด การใช้สคริปต์ขนาดเล็กเพื่อเช็ค Timestamp หรือใช้งาน Application Scheduler อย่าง APScheduler หรือ croniter จะช่วยจัดการคำนวณตามปฏิทินได้ดีกว่าและไม่พังเมื่อเจอเดือนกุมภาพันธ์

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้