Thep Excel

minus – ลบระยะเวลาจาก DateTime

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) }}

By ThepExcel AI Agent
18 December 2025

Function Metrics


Popularity
8/10

Difficulty
3/10

Usefulness
8/10

Syntax & Arguments

={{ $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 มิลลิวินาที

How it works

คำนวณ deadline ย้อนหลัง

ใช้ minus() คำนวณวันที่ที่ต้องเริ่มงานเพื่อให้ทันกำหนด เช่น ถ้า deadline คือ 30 วันข้างหน้า และต้องใช้เวลา 5 วัน ก็ต้องเริ่มงาน 25 วันข้างหน้า

สร้าง date range สำหรับ query ข้อมูล

ใช้ minus() กำหนดช่วงเวลาย้อนหลังสำหรับ filter ข้อมูล เช่น query ข้อมูล 7 วันย้อนหลัง หรือ 3 เดือนที่ผ่านมา

คำนวณวันหมดอายุ

ใช้ minus() คำนวณว่าสินค้าหรือบริการจะหมดอายุเมื่อไหร่ เช่น subscription ที่มีอายุ 1 ปี จะหมดอายุในวันไหน

Examples

ตัวอย่างที่ 1: ลบวันจากวันที่ (พื้นฐาน)
{{ toDateTime('2024-12-25').minus({days: 7}) }}
ลบ 7 วันจากวันที่ 25 ธันวาคม 2024 ได้วันที่ 18 ธันวาคม 2024
.
สังเกตว่าต้องใช้ toDateTime() แปลง string เป็น DateTime object ก่อนนะครับ ไม่งั้น minus() จะใช้ไม่ได้ 😅
.
เหมาะสำหรับคำนวณวันที่ย้อนหลังแบบง่ายๆ ครับ
n8n Formula:

={{ toDateTime('2024-12-25').minus({days: 7}) }}

Result:

2024-12-18T00:00:00.000Z

ตัวอย่างที่ 2: คำนวณช่วงเวลาย้อนหลังจากปัจจุบัน
{{ $now.minus({weeks: 2}) }}
ใช้ $now.minus({weeks: 2}) คำนวณเวลา 2 สัปดาห์ที่แล้ว
.
ตัวอย่างนี้เจ๋งตรงที่ใช้ $now ซึ่งเป็น DateTime object อยู่แล้ว ไม่ต้องแปลงอะไรเพิ่ม 😎
.
เหมาะสำหรับสร้าง date range สำหรับ query ข้อมูล เช่น ดึงข้อมูล orders ย้อนหลัง 2 สัปดาห์ สามารถใช้กับ HTTP Request node เพื่อ filter data ตาม date range ได้เลยครับ
n8n Formula:

={{ $now.minus({weeks: 2}) }}

Result:

2024-12-03T14:30:52.414Z (สมมติเวลาปัจจุบันคือ 2024-12-17 14:30:52)

ตัวอย่างที่ 3: ลบหลายหน่วยเวลาพร้อมกัน
{{ toDateTime($json.deliveryDate).minus({days: 3, hours: 6}) }}
สมมติ $json.deliveryDate = '2024-12-26 00:00:00' (วันส่งสินค้า)
.
ใช้ minus({days: 3, hours: 6}) ลบ 3 วัน 6 ชั่วโมงพร้อมกัน เพื่อคำนวณเวลาที่ต้องเตรียมสินค้า ได้วันที่ 22 ธันวาคม เวลา 18:00
.
จุดเด่นของ minus() คือสามารถลบหลายหน่วยเวลาพร้อมกันได้ในคำสั่งเดียว ไม่ต้องมาแยก minus หลายรอบ 😎
.
เหมาะสำหรับ workflow logistics ที่ต้องคำนวณ lead time ย้อนหลังครับ
n8n Formula:

={{ toDateTime($json.deliveryDate).minus({days: 3, hours: 6}) }}

Result:

2024-12-22 18:00:00 (ถ้า deliveryDate = '2024-12-26 00:00:00')

ตัวอย่างที่ 4: สร้าง date range สำหรับ API query
{{ { start_date: $now.minus({months: 1}).toFormat('yyyy-MM-dd'), end_date: $now.toFormat('yyyy-MM-dd') } }}
สร้าง object ที่มี start_date (1 เดือนย้อนหลัง) และ end_date (วันนี้) สำหรับส่งไปยัง API
.
ใช้ minus({months: 1}) คำนวณวันเริ่มต้นย้อนหลัง 1 เดือน จากนั้นใช้ .toFormat('yyyy-MM-dd') แปลงเป็นรูปแบบที่ API ต้องการ
.
ตัวอย่างนี้ผมใช้บ่อยมากครับ ตอนทำ workflow ที่ดึงข้อมูล analytics หรือ report ย้อนหลัง 1 เดือน 💡
.
ใช้กับ HTTP Request node ใน n8n ได้เลยโดยใส่ expression นี้ใน Body หรือ Query Parameters ครับ
n8n Formula:

={{ {
  start_date: $now.minus({months: 1}).toFormat('yyyy-MM-dd'),
  end_date: $now.toFormat('yyyy-MM-dd')
} }}

Result:

{
start_date: '2024-11-17',
end_date: '2024-12-17'
}

FAQs

minus() ต่างจาก plus() อย่างไร?

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 ทีละตัว 😎

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() กับ $json.date ที่เป็น string ได้ไหม?

ไม่ได้ครับ minus() ใช้กับ DateTime object เท่านั้น
.
ต้องแปลง string เป็น DateTime object ก่อนด้วย toDateTime() เช่น toDateTime($json.date).minus({days: 1})
.
ผมเจอ error นี้บ่อยมาก ตอนเริ่มเขียน n8n 😅 จำไว้ว่าต้อง convert ก่อนเสมอนะครับ

minus() vs diff() ต่างกันอย่างไร?

สองฟังก์ชันนี้ใช้งานต่างกันนะครับ:
.
• minus() ลบระยะเวลาออกจาก DateTime และ return DateTime object ใหม่ (คำนวณวันที่ย้อนหลัง)
• diff() หาความต่างระหว่าง 2 DateTime และ return Duration object (หาช่วงห่างระหว่างสองวัน)
.
ตัวอย่าง: date.minus({days: 7}) = 7 วันก่อน vs date.diff(otherDate, ‘days’) = จำนวนวันระหว่าง 2 วันที่

Resources & Related

Additional Notes

minus() เป็น method ของ Luxon DateTime ที่ใช้ลบระยะเวลาออกจาก DateTime object ครับ
.
เวลาที่เราต้องคำนวณวันที่ย้อนหลัง เช่น “7 วันที่แล้ว” หรือ “3 เดือนก่อน” minus() ก็เข้ามาช่วยได้เลย 😎
.
รับพารามิเตอร์เป็น duration object ที่กำหนดจำนวนปี เดือน สัปดาห์ วัน ชั่วโมง นาที หรือวินาที ที่ต้องการลบออก แล้ว return DateTime object ใหม่ที่มีค่าย้อนหลังตามระยะเวลาที่กำหนด
.
ส่วนตัวผมใช้บ่อยมากตอนทำ workflow ที่ต้อง query ข้อมูลย้อนหลัง เช่น ดึง orders 7 วันที่แล้ว หรือคำนวณ deadline ย้อนหลังครับ 💡

Leave a Reply

Your email address will not be published. Required fields are marked *