تاریخ و زمان
Date & Time
تبدیل فرمت تاریخ، محاسبه زمانی، تغییر Timezone و استخراج اجزای تاریخ
نمای کلی
نود DateTime چیست؟
نود DateTime امکان تبدیل، محاسبه و فرمتبندی تاریخ و زمان را فراهم میکند.
قابلیتهای کلیدی:
- تبدیل بین فرمتهای مختلف تاریخ (ISO, Unix, Custom)
- محاسبه اختلاف بین دو تاریخ
- جمع/تفریق زمان (افزودن روز، ساعت، دقیقه)
- تبدیل Timezone (مثلاً UTC به Asia/Tehran)
- استخراج اجزا: سال، ماه، روز، ساعت، روز هفته
- Round کردن زمان (ابتدای ساعت، روز، هفته)
- مقایسه تاریخها (قبل/بعد)
فرمتهای رایج:
- ISO 8601:
2024-01-15T10:30:00Z - Unix Timestamp:
1705312200 - Custom:
1402/10/25یا15 Jan 2024
Timezone ایران:
Asia/Tehran(UTC+3:30)- در تابستان: UTC+4:30 (اگر DST فعال باشد)
احراز هویت
بدون نیاز به احراز هویت - نود DateTime یک نود داخلی n8n است.
عملیاتهای موجود
تبدیل فرمت تاریخ
تبدیل تاریخ از یک فرمت به فرمت دیگر. مثلاً ISO به فارسی یا Unix به خوانا.
جمع/تفریق زمان
افزودن یا کسر کردن مقدار زمانی. مثلاً 7 روز بعد، 2 ساعت قبل.
محاسبه اختلاف
محاسبه فاصله زمانی بین دو تاریخ. خروجی بر حسب واحد انتخابی.
تبدیل Timezone
تبدیل تاریخ از یک Timezone به دیگری. مثلاً UTC به Asia/Tehran.
استخراج اجزا
استخراج بخشی از تاریخ: سال، ماه، روز، ساعت، دقیقه، روز هفته، هفته سال.
Round کردن زمان
گرد کردن زمان به نزدیکترین واحد. مثلاً ابتدای ساعت جاری یا ابتدای روز.
تاریخ فعلی
دریافت تاریخ و زمان فعلی با Timezone دلخواه.
مقایسه تاریخ
مقایسه دو تاریخ: قبل، بعد، مساوی، بین دو تاریخ.
کاربردهای متداول
موارد استفاده رایج
۱. زمانبندی یادآورها
محاسبه 3 روز قبل از سررسید فاکتور > ارسال یادآور به مشتری از طریق Telegram/Email.
۲. تبدیل UTC به وقت تهران
API خارجی تاریخ UTC برمیگرداند > تبدیل به Asia/Tehran > نمایش به کاربر ایرانی.
۳. فیلتر رکوردهای اخیر
دریافت داده > محاسبه اختلاف با Now > فقط رکوردهای 7 روز اخیر عبور کنند.
۴. تولید گزارش دورهای
محاسبه ابتدا و انتهای هفته/ماه جاری > Query دیتابیس با بازه تاریخ.
۵. محاسبه سن سفارش
زمان ایجاد سفارش تا حالا > نمایش "2 ساعت پیش" یا "3 روز پیش".
۶. SLA Monitoring
محاسبه زمان باقیمانده تا Deadline SLA > هشدار اگر کمتر از 1 ساعت.
۷. تقویم محتوایی
محاسبه تاریخ انتشار: "هر سهشنبه ساعت 10 صبح" > Schedule + DateTime.
۸. انقضای Token/License
بررسی تاریخ انقضا: اگر کمتر از 30 روز مانده > ارسال یادآور تمدید.
۹. گروهبندی بر اساس تاریخ
استخراج ماه/سال از تاریخ > گروهبندی فروش به صورت ماهانه.
۱۰. Working Hours Check
بررسی ساعت کاری (8-17): اگر خارج ساعت کاری است > صف پیام.
نکات حرفهای
نکات و ترفندها
توکنهای فرمت Luxon
yyyy: سال 4 رقمی (2024)MM: ماه 2 رقمی (01-12)dd: روز 2 رقمی (01-31)HH: ساعت 24 ساعته (00-23)hh: ساعت 12 ساعتهmm: دقیقهss: ثانیهEEEE: نام روز هفته (Monday)MMMM: نام ماه (January)
Expressionهای تاریخ n8n
- زمان فعلی:
{{ $now }} - امروز:
{{ $today }} - فرمت:
{{ $now.toFormat('yyyy/MM/dd') }} - جمع:
{{ $now.plus({days: 7}) }} - تفریق:
{{ $now.minus({hours: 2}) }} - Timezone:
{{ $now.setZone('Asia/Tehran') }}
تاریخ شمسی
n8n مستقیماً شمسی ندارد. از Code node استفاده کنید یا از Expression: تبدیل به شمسی نیاز به کتابخانه یا API خارجی دارد.
بهترین روشها
- همیشه تاریخ را به UTC ذخیره کنید
- فقط موقع نمایش به Timezone محلی تبدیل کنید
- ISO 8601 بهترین فرمت برای ذخیرهسازی
- Unix timestamp برای مقایسه عددی سریع
ادغام با سایر نودها
- Schedule Trigger: اجرای Workflow در زمان خاص
- Filter: فیلتر بر اساس بازه تاریخ
- IF: شرط بر اساس روز هفته یا ساعت
- Wait: تأخیر تا زمان مشخص
- Set: افزودن فیلد تاریخ محاسبهشده
رفع مشکلات
عیبیابی
۱. فرمت تاریخ تشخیص داده نمیشود
**مشکل:** DateTime نمیتواند فرمت ورودی را Parse کند **راهحل:** فرمت ورودی را صریحاً مشخص کنید. از ISO 8601 استفاده کنید. فرمتهای مبهم مثل 01/02/03 مشکلساز هستند.
۲. Timezone اشتباه
**مشکل:** ساعت 3:30 اختلاف دارد **راهحل:** ایران UTC+3:30 است. از Asia/Tehran استفاده کنید نه +03:30. DST ایران را در نظر بگیرید.
۳. Unix Timestamp به میلیثانیه
**مشکل:** تاریخ سال 1970 نشان میدهد **راهحل:** JavaScript از milliseconds استفاده میکند. اگر Unix seconds دارید: timestamp * 1000.
۴. تاریخ شمسی
**مشکل:** n8n از تقویم شمسی پشتیبانی نمیکند **راهحل:** از Code node با کتابخانه jalaali-js استفاده کنید. یا از API تبدیل تاریخ.
۵. خطای Invalid Date
مشکل: مقدار ورودی تاریخ نیست راهحل: ابتدا با Filter بررسی کنید مقدار خالی نباشد. فرمت صحیح بررسی شود.
۶. اختلاف محاسبه منفی
**مشکل:** نتیجه Difference منفی است **راهحل:** ترتیب date1 و date2 مهم است. از Math.abs() برای مقدار مطلق.
۷. DST (ساعت تابستانی)
مشکل: یک ساعت اختلاف غیرمنتظره راهحل: از IANA timezone names استفاده کنید (خودکار DST). از fixed offset اجتناب کنید.
۸. فرمت خروجی اشتباه
مشکل: توکنهای فرمت کار نمیکنند راهحل: n8n از Luxon format tokens استفاده میکند: yyyy (سال)، MM (ماه)، dd (روز)، HH (ساعت 24)، mm (دقیقه).
