minus() ลบระยะเวลาออกจาก DateTime object โดยรับ duration object ที่ระบุหน่วยเวลาที่ต้องการลบ (years, months, weeks, days, hours, minutes, seconds, milliseconds) สามารถรวมหลายหน่วยในครั้งเดียวได้ เช่น {days: 7, hours: 3} เหมาะสำหรับคำนวณวันที่ย้อนหลัง กำหนด deadline ย้อนหลัง คำนวณวันหมดอายุ สร้าง date range สำหรับ filter ข้อมูล หรือคำนวณช่วงเวลาในอดีตสำหรับ analytics
={{ $json.dateTime.minus(duration) }}
={{ $json.dateTime.minus(duration) }}
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| duration | object | Yes | Duration object ที่กำหนดระยะเวลาที่ต้องการลบ รองรับ years (ปี), quarters (ไตรมาส), months (เดือน), weeks (สัปดาห์), days (วัน), hours (ชั่วโมง), minutes (นาที), seconds (วินาที), milliseconds (มิลลิวินาที) สามารถระบุหลายหน่วยพร้อมกันได้ เช่น {days: 7, hours: 12} หรือใช้เป็นตัวเลข (milliseconds) เช่น minus(123) จะลบ 123 มิลลิวินาที |
ใช้ minus() คำนวณวันที่ที่ต้องเริ่มงานเพื่อให้ทันกำหนด เช่น ถ้า deadline คือ 30 วันข้างหน้า และต้องใช้เวลา 5 วัน ก็ต้องเริ่มงาน 25 วันข้างหน้า
ใช้ minus() กำหนดช่วงเวลาย้อนหลังสำหรับ filter ข้อมูล เช่น query ข้อมูล 7 วันย้อนหลัง หรือ 3 เดือนที่ผ่านมา
ใช้ minus() คำนวณว่าสินค้าหรือบริการจะหมดอายุเมื่อไหร่ เช่น subscription ที่มีอายุ 1 ปี จะหมดอายุในวันไหน
{{ toDateTime('2024-12-25').minus({days: 7}) }}={{ toDateTime('2024-12-25').minus({days: 7}) }}
2024-12-18T00:00:00.000Z
{{ $now.minus({weeks: 2}) }}={{ $now.minus({weeks: 2}) }}
2024-12-03T14:30:52.414Z (สมมติเวลาปัจจุบันคือ 2024-12-17 14:30:52)
{{ toDateTime($json.deliveryDate).minus({days: 3, hours: 6}) }}={{ toDateTime($json.deliveryDate).minus({days: 3, hours: 6}) }}
2024-12-22 18:00:00 (ถ้า deliveryDate = '2024-12-26 00:00:00')
{{ { start_date: $now.minus({months: 1}).toFormat('yyyy-MM-dd'), end_date: $now.toFormat('yyyy-MM-dd') } }}={{ {
start_date: $now.minus({months: 1}).toFormat('yyyy-MM-dd'),
end_date: $now.toFormat('yyyy-MM-dd')
} }}
{
start_date: '2024-11-17',
end_date: '2024-12-17'
}
minus() ลบระยะเวลาออกจาก DateTime (ย้อนหลัง) ส่วน plus() บวกระยะเวลาเข้าไป (ไปข้างหน้า)
.
ง่ายๆ ครับ: $now.minus({days: 7}) = 7 วันที่แล้ว, $now.plus({days: 7}) = 7 วันข้างหน้า 😎
ได้เลยครับ ใช้ object ที่มีหลาย key เช่น minus({days: 7, hours: 12, minutes: 30}) จะลบ 7 วัน 12 ชั่วโมง 30 นาทีพร้อมกัน
.
Luxon จะคำนวณผลลัพธ์โดยรวมทุกหน่วยเวลาที่ระบุให้เลย ไม่ต้องมา minus ทีละตัว 😎
รองรับ years (ปี), quarters (ไตรมาส), months (เดือน), weeks (สัปดาห์), days (วัน), hours (ชั่วโมง), minutes (นาที), seconds (วินาที), milliseconds (มิลลิวินาที)
.
⚠️ ข้อสำคัญ: ใช้ชื่อเป็น plural เสมอนะครับ เช่น {days: 1} ไม่ใช่ {day: 1} ไม่งั้นจะ error 😅
Luxon ฉลาดมากครับ มันจะคำนวณแบบ calendar-aware
.
ตัวอย่างเช่น minus({months: 1}) จาก 31 มีนาคม จะได้ 28 กุมภาพันธ์ (ปีปกติ) เพราะกุมภาพันธ์ไม่มีวันที่ 31
.
Luxon ปรับให้อยู่ในช่วงวันที่ที่ถูกต้องให้อัตโนมัติ ไม่ต้องกลัวว่าจะได้วันที่ผิด 😎
ไม่ได้ครับ minus() ใช้กับ DateTime object เท่านั้น
.
ต้องแปลง string เป็น DateTime object ก่อนด้วย toDateTime() เช่น toDateTime($json.date).minus({days: 1})
.
ผมเจอ error นี้บ่อยมาก ตอนเริ่มเขียน n8n 😅 จำไว้ว่าต้อง convert ก่อนเสมอนะครับ
สองฟังก์ชันนี้ใช้งานต่างกันนะครับ:
.
• minus() ลบระยะเวลาออกจาก DateTime และ return DateTime object ใหม่ (คำนวณวันที่ย้อนหลัง)
• diff() หาความต่างระหว่าง 2 DateTime และ return Duration object (หาช่วงห่างระหว่างสองวัน)
.
ตัวอย่าง: date.minus({days: 7}) = 7 วันก่อน vs date.diff(otherDate, ‘days’) = จำนวนวันระหว่าง 2 วันที่
minus() เป็น method ของ Luxon DateTime ที่ใช้ลบระยะเวลาออกจาก DateTime object ครับ
.
เวลาที่เราต้องคำนวณวันที่ย้อนหลัง เช่น “7 วันที่แล้ว” หรือ “3 เดือนก่อน” minus() ก็เข้ามาช่วยได้เลย 😎
.
รับพารามิเตอร์เป็น duration object ที่กำหนดจำนวนปี เดือน สัปดาห์ วัน ชั่วโมง นาที หรือวินาที ที่ต้องการลบออก แล้ว return DateTime object ใหม่ที่มีค่าย้อนหลังตามระยะเวลาที่กำหนด
.
ส่วนตัวผมใช้บ่อยมากตอนทำ workflow ที่ต้อง query ข้อมูลย้อนหลัง เช่น ดึง orders 7 วันที่แล้ว หรือคำนวณ deadline ย้อนหลังครับ 💡