نود Date & Time در N8N
نود Date & Time در N8N یکی از نودهای کاربردی برای کار با تاریخ و زمان است. با این نود میتوانید تاریخ فعلی را تولید کنید، تاریخها را فرمت کنید، به یک تاریخ مقدار زمانی اضافه یا کم کنید، اختلاف بین دو تاریخ را محاسبه کنید و بخشهایی مثل سال، ماه، روز یا ساعت را از یک مقدار زمانی استخراج کنید.
در بسیاری از ورکفلوهای اتوماسیون، مدیریت زمان نقش مهمی دارد؛ از زمانبندی ارسال ایمیل گرفته تا محاسبه مهلت پرداخت، ساخت گزارشهای روزانه، ثبت زمان اجرای فرآیندها و تبدیل فرمت تاریخ برای APIها و دیتابیسها. نود Date & Time این کارها را بدون نیاز به کدنویسی پیچیده انجام میدهد.
معرفی نود در N8N
نود Date & Time یک نود داخلی در N8N است که برای تبدیل، محاسبه و مدیریت دادههای زمانی استفاده میشود. این نود معمولاً روی دادههای ورودی اجرا میشود و یک فیلد جدید شامل نتیجه عملیات زمانی به هر آیتم اضافه میکند یا مقدار یک فیلد موجود را تغییر میدهد.
- نام نود: Date & Time
- دستهبندی: Core / Function / Data Transformation
- نوع عملکرد: Action Node، چون روی دادههای ورودی عملیات انجام میدهد
- کاربرد اصلی: پردازش تاریخ و زمان در ورکفلوها
- نیاز به اتصال خارجی: ندارد
اهمیت این نود زمانی مشخص میشود که لازم باشد دادههای زمانی بین سیستمهای مختلف هماهنگ شوند. برای مثال ممکن است یک API تاریخ را بهصورت ISO دریافت کند، اما دیتابیس شما تاریخ را با فرمت دیگری ذخیره کند. یا ممکن است بخواهید فقط سفارشهایی را پردازش کنید که کمتر از ۲۴ ساعت از ثبت آنها گذشته است.
موارد استفاده
نود Date & Time در پروژههای واقعی کاربردهای زیادی دارد. این نود بهخصوص زمانی مفید است که تاریخها از منابع مختلف مانند فرمها، دیتابیسها، APIها، فایلهای CSV، Google Sheets یا سیستمهای CRM وارد ورکفلو میشوند.
نمونههای واقعی کاربرد
- ثبت زمان اجرای ورکفلو: اضافه کردن تاریخ و ساعت فعلی به هر رکورد برای لاگگیری.
- محاسبه تاریخ سررسید: اضافه کردن ۷ روز به تاریخ ثبت سفارش برای تعیین مهلت پرداخت.
- فرمت کردن تاریخ برای ارسال به API: تبدیل تاریخ به فرمت ISO 8601 یا فرمت سفارشی موردنیاز سرویس مقصد.
- محاسبه اختلاف زمانی: محاسبه تعداد روزهای بین تاریخ ثبت تیکت و تاریخ پاسخگویی.
- استخراج بخش خاصی از تاریخ: گرفتن فقط سال، ماه، روز هفته یا ساعت برای گزارشگیری.
- تنظیم منطقه زمانی: تبدیل زمان UTC به منطقه زمانی تهران یا سایر مناطق زمانی.
سناریوی ۱: ساخت تاریخ سررسید پرداخت
فرض کنید در یک فروشگاه آنلاین، بعد از ثبت سفارش باید تاریخ سررسید پرداخت ۳ روز بعد از تاریخ ثبت سفارش محاسبه شود. در این حالت میتوانید تاریخ سفارش را از نود Webhook یا دیتابیس دریافت کنید و با نود Date & Time به آن ۳ روز اضافه کنید.
- نودهای پیشنهادی: Webhook، Date & Time، IF، Email Send
- عملیات: Add to a Date
- نتیجه: تولید فیلدی مثل dueDate برای ارسال ایمیل یا ذخیره در دیتابیس
سناریوی ۲: ارسال گزارش روزانه با تاریخ فرمتشده
در گزارشهای روزانه معمولاً لازم است تاریخ گزارش در عنوان ایمیل یا نام فایل قرار بگیرد. نود Date & Time میتواند تاریخ فعلی را بگیرد و آن را به فرمتی مثل 2026-05-29 یا 29-05-2026 تبدیل کند.
- نودهای پیشنهادی: Schedule Trigger، Date & Time، Google Sheets، Email Send
- عملیات: Get Current Date و Format a Date
- نتیجه: ساخت عنوانهایی مثل Daily Report – 2026-05-29
سناریوی ۳: فیلتر کردن رکوردهای قدیمی
اگر بخواهید فقط رکوردهایی را پردازش کنید که بیشتر از ۳۰ روز از ایجاد آنها گذشته است، میتوانید با Date & Time اختلاف تاریخ فعلی و تاریخ ایجاد رکورد را محاسبه کنید و سپس با نود IF شرط بگذارید.
- نودهای پیشنهادی: Database، Date & Time، IF، Slack
- عملیات: Get Time Between Dates
- نتیجه: تشخیص رکوردهای قدیمی و ارسال هشدار
پارامترها و تنظیمات
تنظیمات نود Date & Time بسته به عملیات انتخابشده تغییر میکند. مهمترین بخش تنظیمات این نود، انتخاب Operation است؛ یعنی مشخص میکنید چه نوع عملیاتی روی تاریخ یا زمان انجام شود.
پارامتر Operation
- نام پارامتر: Operation
- نوع داده: Options / Select
- کاربرد: مشخص میکند نود چه کاری انجام دهد.
- مثال: انتخاب Format a Date برای تغییر فرمت تاریخ ورودی.
عملیات Get Current Date
این عملیات تاریخ و زمان فعلی را تولید میکند. برای ثبت زمان اجرای ورکفلو، ساخت لاگ، ثبت زمان ارسال پیام یا تولید timestamp بسیار کاربردی است.
- Operation: Get Current Date
- Output Field Name: نام فیلدی که تاریخ فعلی در آن ذخیره میشود.
- Timezone: منطقه زمانی موردنظر برای تولید تاریخ.
- Include Input Fields: مشخص میکند دادههای ورودی قبلی در خروجی حفظ شوند یا فقط نتیجه نود برگردد.
مثال عملی: اگر Output Field Name را برابر currentDate قرار دهید، خروجی نود شامل فیلدی به نام currentDate خواهد بود که تاریخ و زمان فعلی را نگه میدارد.
عملیات Format a Date
این عملیات برای تبدیل فرمت یک تاریخ استفاده میشود. زمانی کاربرد دارد که داده تاریخی را از یک سیستم دریافت کردهاید و باید آن را با فرمت موردنیاز سیستم دیگری ارسال کنید.
- Operation: Format a Date
- Date: مقدار تاریخ ورودی که باید فرمت شود. این مقدار میتواند ثابت یا Expression باشد.
- From Format: فرمت تاریخ ورودی، در صورتی که نود نتواند آن را بهصورت خودکار تشخیص دهد.
- To Format: فرمت خروجی موردنظر.
- Timezone: منطقه زمانی موردنظر برای پردازش یا نمایش تاریخ.
- Output Field Name: نام فیلد خروجی.
مثال عملی: تبدیل مقدار 2026-05-29T10:30:00.000Z به 2026-05-29 یا 29/05/2026.
عملیات Add to a Date
این عملیات مقدار مشخصی زمان به یک تاریخ اضافه میکند. برای ساخت تاریخ سررسید، زمان یادآوری، زمان انقضا یا برنامهریزی رویدادها استفاده میشود.
- Operation: Add to a Date
- Date: تاریخ پایه که باید به آن زمان اضافه شود.
- Value: مقدار عددی که قرار است اضافه شود.
- Unit: واحد زمانی مانند seconds، minutes، hours، days، weeks، months یا years.
- Output Field Name: نام فیلد خروجی برای ذخیره نتیجه.
مثال عملی: اگر تاریخ سفارش 2026-05-29 باشد و مقدار 7 با واحد days اضافه شود، خروجی برابر 2026-06-05 خواهد بود.
عملیات Subtract from a Date
این عملیات از یک تاریخ مقدار زمانی مشخصی کم میکند. برای محاسبه بازههای زمانی گذشته، پیدا کردن تاریخ شروع دوره یا بررسی دادههای قدیمی کاربرد دارد.
- Operation: Subtract from a Date
- Date: تاریخ پایه.
- Value: مقدار عددی که باید کم شود.
- Unit: واحد زمانی مانند days یا hours.
- Output Field Name: نام فیلد خروجی.
مثال عملی: برای دریافت تاریخ ۳۰ روز قبل از امروز، ابتدا با Get Current Date تاریخ فعلی را تولید کنید و سپس با Subtract from a Date مقدار 30 days را کم کنید.
عملیات Get Time Between Dates
این عملیات اختلاف بین دو تاریخ را محاسبه میکند. خروجی میتواند بر اساس واحدهای زمانی مختلف مثل ثانیه، دقیقه، ساعت، روز یا ماه باشد.
- Operation: Get Time Between Dates
- Start Date: تاریخ شروع.
- End Date: تاریخ پایان.
- Unit: واحد محاسبه اختلاف زمانی.
- Output Field Name: نام فیلدی که نتیجه در آن ذخیره میشود.
مثال عملی: اگر Start Date برابر تاریخ ایجاد تیکت و End Date برابر تاریخ پاسخ باشد، میتوانید زمان پاسخگویی تیم پشتیبانی را بر حسب ساعت محاسبه کنید.
عملیات Extract Part of a Date
این عملیات یک بخش مشخص از تاریخ را استخراج میکند؛ مثلاً فقط سال، ماه، روز، ساعت یا روز هفته.
- Operation: Extract Part of a Date
- Date: تاریخ ورودی.
- Part: بخشی از تاریخ که باید استخراج شود، مانند year، month، day، hour، minute یا weekday.
- Output Field Name: نام فیلد خروجی.
مثال عملی: برای گزارشگیری ماهانه از فروشها میتوانید ماه هر سفارش را استخراج کنید و بعد با نودهای دیگر دادهها را گروهبندی کنید.
عملیات Round a Date
این عملیات برای گرد کردن تاریخ به یک واحد زمانی مشخص استفاده میشود. برای مثال میتوانید زمان را به ابتدای روز، ابتدای ساعت یا ابتدای ماه تبدیل کنید.
- Operation: Round a Date
- Date: تاریخ ورودی.
- Mode: نوع گرد کردن، مانند round down یا round up.
- Unit: واحد زمانی که تاریخ باید بر اساس آن گرد شود.
- Output Field Name: نام فیلد خروجی.
مثال عملی: اگر تاریخ 2026-05-29T15:42:10 باشد و آن را به ابتدای روز گرد کنید، خروجی میتواند 2026-05-29T00:00:00 شود.
پارامتر Date
- نام پارامتر: Date
- نوع داده: String / Date / Expression
- کاربرد: مشخص کردن تاریخ ورودی برای عملیاتهایی مثل فرمت کردن، اضافه کردن، کم کردن یا استخراج بخش تاریخ.
- مثال: {{$json.createdAt}}
در N8N معمولاً تاریخها از فیلدهای JSON خوانده میشوند. برای استفاده از مقدار یک فیلد ورودی، میتوانید از Expression استفاده کنید.
پارامتر Output Field Name
- نام پارامتر: Output Field Name
- نوع داده: String
- کاربرد: تعیین نام فیلدی که نتیجه عملیات در آن ذخیره میشود.
- مثال: formattedDate، dueDate، daysDiff، currentTimestamp
اگر نام فیلد خروجی را مشابه یکی از فیلدهای ورودی قرار دهید، ممکن است مقدار قبلی آن فیلد جایگزین شود. بهتر است برای جلوگیری از خطا، نامهای واضح و مستقل انتخاب شود.
پارامتر Timezone
- نام پارامتر: Timezone
- نوع داده: Select / String
- کاربرد: مشخص کردن منطقه زمانی برای محاسبه یا نمایش تاریخ.
- مثال: Asia/Tehran، UTC، Europe/Berlin، America/New_York
استفاده از Timezone درست در ورکفلوهایی که کاربران یا سرویسها در مناطق زمانی مختلف هستند بسیار مهم است. برای ایران معمولاً مقدار Asia/Tehran استفاده میشود.
پارامتر Include Input Fields
- نام پارامتر: Include Input Fields
- نوع داده: Boolean
- کاربرد: تعیین میکند فیلدهای قبلی آیتم ورودی در خروجی حفظ شوند یا خیر.
- مثال: اگر فعال باشد، خروجی شامل دادههای قبلی بههمراه فیلد جدید تاریخ خواهد بود.
نکات مهم هنگام پیکربندی
- برای تاریخهای استاندارد، بهتر است از فرمت ISO 8601 استفاده شود؛ مانند 2026-05-29T10:30:00.000Z.
- اگر تاریخ ورودی نامعتبر باشد، نود نمیتواند عملیات را درست انجام دهد و ممکن است خطای Invalid Date ایجاد شود.
- در محاسبات حساس مالی یا قراردادی، منطقه زمانی را صریح مشخص کنید.
- اگر از تاریخ شمسی استفاده میکنید، نود Date & Time بهصورت پیشفرض برای تقویم میلادی طراحی شده است و برای تبدیل شمسی باید از راهکارهای تکمیلی مثل Code Node یا API تبدیل تاریخ استفاده شود.
- در فرمتهای سفارشی، بین حروف بزرگ و کوچک تفاوت وجود دارد. برای مثال MM معمولاً به ماه اشاره دارد، اما mm ممکن است دقیقه باشد.
ورودیها و خروجیها
نود Date & Time معمولاً آیتمهای JSON را بهعنوان ورودی دریافت میکند. هر آیتم میتواند شامل یک یا چند فیلد تاریخی باشد. این نود پس از اجرای عملیات، نتیجه را در فیلد خروجی مشخصشده قرار میدهد.
نمونه ورودی
{ "orderId": 1250, "customerName": "Ali Ahmadi", "createdAt": "2026-05-29T10:30:00.000Z", "paymentStatus": "pending"}نمونه تنظیمات
- Operation: Add to a Date
- Date: {{$json.createdAt}}
- Value: 3
- Unit: days
- Output Field Name: paymentDueDate
- Timezone: Asia/Tehran
نمونه خروجی
{ "orderId": 1250, "customerName": "Ali Ahmadi", "createdAt": "2026-05-29T10:30:00.000Z", "paymentStatus": "pending", "paymentDueDate": "2026-06-01T10:30:00.000+03:30"}جدول ساختار دادهها
- orderId: شناسه سفارش، عددی
- customerName: نام مشتری، رشته متنی
- createdAt: تاریخ ثبت سفارش، رشته زمانی
- paymentStatus: وضعیت پرداخت، رشته متنی
- paymentDueDate: تاریخ سررسید پرداخت، خروجی تولیدشده توسط Date & Time
نکات پیشرفته و ترفندها
استفاده از Expression برای تاریخهای پویا
بهجای وارد کردن تاریخ ثابت، بهتر است در بیشتر سناریوها از Expression استفاده کنید. برای مثال اگر فیلد تاریخ در ورودی با نام createdAt وجود دارد، میتوانید مقدار آن را با عبارت زیر به نود Date & Time بدهید:
{{$json.createdAt}}ترکیب با IF برای شرطگذاری زمانی
یکی از رایجترین الگوها این است که ابتدا با Date & Time اختلاف زمانی را محاسبه کنید و سپس با نود IF بررسی کنید آیا این مقدار از حد مشخصی بیشتر است یا نه.
- محاسبه اختلاف بین تاریخ فعلی و تاریخ ایجاد رکورد
- بررسی اینکه اختلاف بیشتر از ۳۰ روز است یا خیر
- ارسال ایمیل، حذف رکورد یا انتقال آن به آرشیو
ترکیب با Schedule Trigger
وقتی از نود Schedule Trigger استفاده میکنید، معمولاً لازم است تاریخ اجرای ورکفلو هم ذخیره شود. با Date & Time میتوانید تاریخ فعلی را تولید و به گزارش، پیام یا فایل خروجی اضافه کنید.
ساخت نام فایل بر اساس تاریخ
برای خروجیهایی مثل فایل CSV، گزارش PDF یا بکاپ دیتابیس، بهتر است نام فایل شامل تاریخ باشد. برای مثال:
sales-report-2026-05-29.csvبرای این کار میتوانید تاریخ فعلی را با Date & Time فرمت کنید و سپس در نودهایی مثل Google Drive، S3، FTP یا Email استفاده کنید.
یکسانسازی تاریخ قبل از ذخیره در دیتابیس
اگر دادهها از چند منبع وارد میشوند، ممکن است هر منبع فرمت تاریخ متفاوتی داشته باشد. قبل از ذخیره در دیتابیس، تاریخها را با Date & Time به یک فرمت واحد تبدیل کنید. این کار گزارشگیری، جستوجو و مرتبسازی زمانی را دقیقتر میکند.
کار با UTC در سیستمهای بینالمللی
در پروژههایی که کاربران از کشورهای مختلف دارند، بهتر است تاریخها را در دیتابیس بهصورت UTC ذخیره کنید و فقط هنگام نمایش یا ارسال پیام، آنها را به Timezone کاربر تبدیل کنید.
محدودیتها و خطاها
محدودیتها
- این نود برای پردازش تاریخ میلادی طراحی شده و تبدیل مستقیم تقویم شمسی را بهصورت داخلی پوشش نمیدهد.
- اگر فرمت تاریخ ورودی مبهم باشد، ممکن است تشخیص تاریخ بهدرستی انجام نشود.
- در محاسبات ماهانه، تعداد روزهای ماهها متفاوت است؛ بنابراین اضافه کردن یک ماه همیشه معادل اضافه کردن ۳۰ روز نیست.
- تغییرات مربوط به Daylight Saving Time در بعضی مناطق زمانی میتواند روی محاسبات ساعت تأثیر بگذارد.
- این نود جایگزین کامل کتابخانههای تخصصی مدیریت تاریخ در سناریوهای بسیار پیچیده نیست.
خطای Invalid Date
این خطا زمانی رخ میدهد که مقدار تاریخ ورودی قابل تشخیص نباشد.
- علت رایج: تاریخ با فرمت نامعتبر مثل 29/13/2026 وارد شده است.
- راهحل: فرمت تاریخ ورودی را بررسی کنید و در صورت نیاز From Format را مشخص کنید.
اشتباه در Timezone
اگر منطقه زمانی اشتباه انتخاب شود، خروجی ممکن است چند ساعت اختلاف داشته باشد.
- علت رایج: استفاده از UTC در حالی که انتظار زمان تهران وجود دارد.
- راهحل: Timezone را بهصورت صریح روی Asia/Tehran یا منطقه موردنظر تنظیم کنید.
جایگزین شدن فیلدهای قبلی
اگر Output Field Name با نام یکی از فیلدهای ورودی یکی باشد، مقدار قبلی ممکن است بازنویسی شود.
- علت رایج: انتخاب createdAt بهعنوان فیلد خروجی در حالی که createdAt از قبل وجود دارد.
- راهحل: از نامهایی مثل formattedCreatedAt یا dueDate استفاده کنید.
اختلاف غیرمنتظره در محاسبه ماه و سال
اضافه یا کم کردن ماه و سال ممکن است در انتهای ماهها نتیجه متفاوتی نسبت به انتظار ایجاد کند.
- مثال: اضافه کردن یک ماه به 31 January ممکن است بسته به منطق پردازش به آخرین روز ماه بعد منتقل شود.
- راهحل: برای محاسبات دقیق قراردادی، منطق کسبوکار را مشخص کنید و خروجی را تست کنید.
ایده ها
- سیستم یادآوری پرداخت: محاسبه تاریخ سررسید فاکتور و ارسال ایمیل یادآوری چند روز قبل از موعد.
- گزارشساز روزانه: تولید خودکار گزارش با نام فایل شامل تاریخ روز و ارسال آن به مدیران.
- آرشیو خودکار دادهها: شناسایی رکوردهای قدیمیتر از ۹۰ روز و انتقال آنها به دیتابیس آرشیو.
- محاسبه SLA پشتیبانی: محاسبه فاصله بین زمان ایجاد تیکت و اولین پاسخ برای سنجش عملکرد تیم.
- برنامهریزی کمپین پیامکی: ساخت زمان ارسال پیام بر اساس تاریخ ثبتنام کاربر، مثلاً ارسال پیام خوشامد ۲۴ ساعت بعد.
