plus() บวกระยะเวลาเข้ากับ DateTime object โดยรับ duration object หรือตัวเลข (milliseconds) เป็น argument ส่วนตัวผมชอบใช้แบบ duration object มากกว่า เพราะอ่านง่ายครับ เช่น {days: 7, hours: 2} สามารถบวกได้หลายหน่วยพร้อมกัน ที่เจ๋งคือ method นี้คำนวณวันที่อย่างถูกต้องแม้เจอ DST หรือปีอธิกสุรทิน return ค่าเป็น DateTime object ใหม่ที่สามารถ chain ต่อกับ method อื่นได้เลย เช่น .format() หรือ .diff()
={{ $json.date.plus(duration) }}
={{ $json.date.plus(duration) }}
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| duration | object|number | Yes | Duration object ที่กำหนดระยะเวลาที่ต้องการบวก รองรับ keys: years, months, weeks, days, hours, minutes, seconds, milliseconds หรือเป็นตัวเลข (milliseconds) เช่น {days: 7} หรือ {hours: 2, minutes: 30} หรือ 3600000 (1 ชั่วโมง) |
บวกจำนวนวันทำการเข้ากับวันสั่งซื้อเพื่อคำนวณวันที่จัดส่งโดยประมาณ ใช้ใน e-commerce workflow
บวกเดือนหรือปีเข้ากับวันเริ่มต้น subscription เพื่อกำหนดวันหมดอายุและส่งการแจ้งเตือนล่วงหน้า
คำนวณวันที่และเวลาสำหรับ task ถัดไปโดยบวก interval เข้ากับเวลาปัจจุบัน เช่น meeting ทุก 2 สัปดาห์
บวกชั่วโมงหรือวันเข้ากับเวลาที่ได้รับ ticket เพื่อคำนวณ deadline ตาม SLA agreement
{{ toDateTime('2024-12-17').plus({days: 7}) }}={{ toDateTime('2024-12-17').plus({days: 7}) }}
2024-12-24T00:00:00.000Z
{{ now().plus({months: 1}) }}={{ now().plus({months: 1}) }}
2025-01-17T...
{{ toDateTime($json.meetingStart).plus({hours: 2, minutes: 30}) }}={{ toDateTime($json.meetingStart).plus({hours: 2, minutes: 30}) }}
เวลาสิ้นสุด meeting
{{ today().plus({weeks: 2, days: 3}) }}={{ today().plus({weeks: 2, days: 3}) }}
วันที่ 17 วันจากวันนี้
{{ $json.createdAt.plus({days: 30}).format('dd/MM/yyyy') }}={{ $json.createdAt.plus({days: 30}).format('dd/MM/yyyy') }}
16/01/2025
plus() บวกระยะเวลาเข้ากับวันที่ (คำนวณอนาคต) ส่วน minus() ลบระยะเวลาออก (คำนวณอดีต) เรียกได้ว่าเป็นคู่กันเลยครับ ใช้ plus() สำหรับ lead time, expiry date, scheduling และใช้ minus() สำหรับ lookback period, age calculation ส่วนตัวผมใช้ทั้งคู่บ่อยมากในงาน automation นะครับ
ได้ครับ ที่เจ๋งคือ Luxon จัดการปีอธิกสุรทินและจำนวนวันในแต่ละเดือนโดยอัตโนมัติ เช่น plus({months: 1}) จาก 31 มกราคม จะได้ 28/29 กุมภาพันธ์ (ขึ้นกับปี) ไม่ใช่วันที่ผิดพลาด เอาจริงๆ นะครับ คุณไม่ต้องกังวลเรื่องนี้เลย Luxon ดูแลให้หมดแล้วครับ 💡
รองรับครับ Luxon DateTime คำนวณ DST โดยอัตโนมัติ ที่ต้องรู้คือการบวก days จะเลื่อนวันตามปฏิทิน (calendar shift) ส่วนการบวก hours จะเพิ่ม timestamp แบบแม่นยำ (รวม DST adjustment) ส่วนตัวผมเคยเจอปัญหานี้ตอนทำงานกับ timezone ที่มี DST เลยรู้ว่า Luxon จัดการได้ดีมากครับ
ต้องแปลง string เป็น DateTime ก่อนด้วย toDateTime() เช่น toDateTime($json.date).plus({days: 7}) ที่ต้องระวังคือไม่สามารถใช้ plus() กับ string โดยตรงได้นะครับ ต้องแปลงก่อนเสมอ ส่วนตัวผมแนะนำให้จำกฎนี้ไว้เลยครับ: string → toDateTime() → plus/minus/format
Return ค่าเป็น DateTime object ใหม่ (immutable) ไม่ได้แก้ไข object เดิมครับ ที่เจ๋งคือสามารถ chain method ต่อได้เลย เช่น .plus({days: 7}).format(‘yyyy-MM-dd’) หรือ .plus({months: 1}).diff(otherDate) ส่วนตัวผมชอบใช้แบบ chain แบบนี้มากครับ เพราะโค้ดอ่านง่ายและเขียนสั้น 😎
plus() คือ method ของ DateTime object ใน n8n ที่ใช้บวกระยะเวลาเข้ากับวันที่และเวลา รับ duration object ที่ระบุจำนวนปี เดือน สัปดาห์ วัน ชั่วโมง นาที หรือวินาทีที่ต้องการเพิ่ม
.
ที่เจ๋งคือมันจัดการ DST (Daylight Saving Time) และปีอธิกสุรทินโดยอัตโนมัติ ไม่ต้องกังวลว่าเดือนมี 28, 30, หรือ 31 วัน
.
ส่วนตัวผมใช้บ่อยมากครับ เวลาคำนวณวันจัดส่ง วันหมดอายุ หรือตารางงานต่างๆ เหมาะสำหรับการคำนวณ lead time ใน workflow automation 😎