تفاوت دو تاریخ شمسی
اختلاف روز بین دو تاریخ جلالی.
قدر مطلق
۱۸۶
- اختلاف روز۱۸۶
مرتبط
در قراردادهای داخلی، SLA پشتیبانی، یا پرسش سادهٔ «از ۱۵ فروردین تا اول مهر چند روز گذشته؟»، مرجع ذهنی بسیاری از کاربران ایرانی تقویم جلالی است — نه میلادی، نه «روز کاری». ابزار تفاوت دو تاریخ شمسی در FinAI اختلاف را بهصورت روز تقویمی بین دو نقطه روی تقویم شمسی برمیگرداند: ورودی با قالب jYYYY/jMM/jDD (مثلاً 1405/01/01)، خروجی signed و قدر مطلق. محاسبه در مرورگر است؛ برای برنامهریزی settlement بورس به روزهای کاری بروید — آنجا جمعه و تعطیلات نمونه حذف میشوند.
signed بودن اختلاف
FinAI پایان minus شروع را برمیگرداند (در پیادهسازی: تفاوت timestamp تقویمی، گرد شده به روز کامل). اگر پایان بعد از شروع باشد، عدد مثبت؛ اگر قبل باشد، منفی. UI هم «اختلاف روز» و هم «قدر مطلق» نشان میدهد — برای «مدت» قرارداد معمولاً abs کافی است؛ برای «چند روز تا سررسید» از امروز، signed مفید است.
ترتیب ورودی در UI مهم نیست اگر فقط مدت میخواهید: abs همان طول بازه را میدهد. برای automation با API query string، start/end را ثابت نگه دارید تا علامت قابل پیشبینی باشد.
تقویم در مقابل ساعت
این ابزار روز میشمارد، نه ساعت و دقیقه. دو timestamp در یک روز جلالی → اختلاف ۰ اگر هر دو به همان jDate map شوند. برای SLA ۴۸ ساعته، از diff ساعتی استفاده نکنید — یا ساعت را جدا مدل کنید.
قالب ورودی و ارقام فارسی
جداکننده / یا - پذیرفته میشود. ارقام فارسی به لاتین نرمال میشوند. تاریخ نامعتبر → null، نه حدس. ماه و روز یک یا دو رقمی (1405/1/5 vs 1405/01/05) در parser یکسان میشوند اگر valid باشند.
تفاوت با date-diff میلادی در ذهن
تبدیل ذهنی «۳۰ روز = یک ماه» در جلالی غلط است: ماههای ۳۱، ۳۰، ۲۹ (کبیسه) متفاوتاند. ابزار روز واقعی تقویم را میشمارد — از 1405/01/01 تا 1405/02/01 دقیقاً ۳۱ روز تقویمی (در سال عادی) نه «یک ماه» abstract. برای «سه ماه بعد» از add-month در کتابخانهٔ تقویم استفاده کنید، نه ضرب ۳۰ در date-diff.
کاربردهای قرارداد و HR
- دورهٔ آزمایشی: از تاریخ استخدام تا پایان آزمایشی — روز تقویمی.
- گارانتی کالا: از فاکتور تا امروز — abs.
- سن دقیق روز: تولد تا امروز — abs؛ برای سن قانونی هنوز قوانین مرجع لازم است.
- فاصلهٔ بین دو رویداد مالی: cut-off مجمع تا پرداخت — اگر تعطیلات وسط باشد، همچنان تقویمی است مگر SLA «روز کاری» تعریف کرده باشد.
مرز با business-days
روزهای کاری بازهٔ [شروع، پایان) را میپیماید و روزهایی که جمعه (در مدل FinAI) یا تعطیلات نمونهٔ ۱۴۰۵ هستند را حذف میکند. date-diff همهٔ روزها را میشمارد شامل جمعه و عید. اگر قرارداد بنویسید «۱۰ روز کاری»، date-diff اشتباه است.
مثال: از 1405/01/14 تا 1405/01/20 — date-diff شش روز تقویمی (بسته به endpoint inclusivity در diff؛ FinAI day diff بر اساس midnight جلالی). business-days کمتر اگر جمعه یا نوروز بین باشد. برای تعطیلات رسمی بورس جدول تعطیلات ۱۴۰۵ را ببینید.
inclusivity: شروع و پایان در diff
تفاوت دو تاریخ «نقطهای» است: معمولاً «چند روز از A تا B» در گفتار روزمره sometimes هر دو endpoint را inclusive میخواهد (+۱). FinAI اختلاف خطی میدهد نه «شمارش inclusive». اگر قرارداد گفت «شامل روز اول و آخر»، یک روز به نتیجه اضافه کنید یا با legal تیم تعریف کنید.
مثالهای عددی (تقویمی)
1405/01/01 → 1405/07/01: تقریباً نیم سال تقویمی — عدد دقیق را فرم بدهد (بر اساس تعداد روز هر ماه جلالی). 1405/12/29 → 1406/01/01: عبور سال — parser jalali-moment سال را handle میکند.
برای audit: همان دو تاریخ را در Excel با تقویم شمسی plugin چک کنید؛ اختلاف باید با FinAI یکی باشد مگر timezone edge — FinAI روی تاریخ جلالی pure است نه UTC shift برای Iran.
خطاهای رایج کاربر
- وارد کردن تاریخ میلادی در فیلد جلالی — سال 2026 بهجای 1405.
- جابهجایی ماه و روز در import دستی.
- انتظار روز کاری while using date-diff.
- استفاده برای interest day-count bank — بانک ممکن است Actual/365 یا قواعد دیگر داشته باشد (سپرده جدا).
زنجیره ابزار FinAI
بعد از دانستن «چند روز تقویمی»، ممکن است بخواهید «چند روز معامله باز» — business-days. برای «آیا فردا بورس باز است؟» trading-hours و bourse-holidays. date-diff لایهٔ پایهٔ زمانی است.
حریم و client-side
تاریخ قرارداد حساس میتواند باشد؛ محاسبه local است. در URL share، query start/end دیده میشود — لینک عمومی با تاریخ تولد یا سررسید وام احتیاط.
برای توسعهدهنده
تابع jalaliDayDiff در repo: parse دو YMD، subtract ms، divide 86400000، round. همان منطق در business-days برای iterate روزها reuse میشود — consistency مهم است.
سال کبیسهٔ جلالی و ۱۴۰۴/۱۴۰۸
سال کبیسه یک روز اسفند اضافه دارد — diff بین دو تاریخ که Esfand 30 را cross میکند باید با تقویم واقعی match شود، نه با «×۳۰». اگر manual حساب کردید ۳۶۵ vs ۳۶۶، فرم مرجع است.
تبدیل ذهنی به هفته و ماه
diff ÷ ۷ ≈ هفته — تقریب. diff ÷ ۳۰ ≈ «ماه تقویمی میانگین» — برای قرارداد «۳۰ روز» explicit از date-diff استفاده کنید نه از ماه شمسی.
دو قرارداد همپوشان
overlap دو بازه = min(end1,end2) − max(start1,start2) با date-diff دو بار — FinAI overlap tool ندارد؛ دو diff یا loop دستی.
مثال SLA پشتیبانی
«پاسخ ظرف ۷ روز» از 1405/06/10: end = start + 7 days calendar در date-diff — اگر SLA «روز کاری» بود business-days. قاطی نکنید.
تولد، بیمه، و age gate
diff از تولد تا امروز abs — برای age قانونی سامانههای دولتی ممکن است rule جدا (مثلاً کامل شدن سال) داشته باشند؛ FinAI فقط day count.
import از CRM
CRM گاهی datetime ISO میدهد — قبل از date-diff به jDate تبدیل کنید. timezone shift میلادی میتواند یک روز جلali را جابهجا کند.
آموزش تیم حقوقی
در draft قرارداد بنویسید «روز تقویمی شمسی» یا «روز کاری مطابق business-days FinAI» — ambiguity کم شود.
جدول مثال diff بدون copy بین صفحات
از 1405/01/01 تا 1405/01/31: diff تقریباً ۳۰ روز — Esfand length در سالهای دیگر فرق دارد. از 1405/06/15 تا 1405/06/15: diff صفر — همان روز. از 1405/06/15 تا 1405/06/14: diff منفی یک — signed مفید.
ربط با سپرده و day count بانکی
بهرهٔ سپرده گاهی Actual/365 یا ۳۶۰ دارد — سپرده tool مسیر جدا. date-diff برای «چند روز بین باز کردن و break» تقویمی raw است؛ bank ممکن است روز کاری یا inclusive rule داشته باشد.
پروژه و milestone
Gantt ذهنی: diff بین milestone ها cumulative delay را نشان میدهد — اگر delay در روز کاری بود business-days.
تولد جلali vs میلادی در فرم
فقط jDate — اگر passport میلادی دارید، اول convert کنید. اشتباه رایج: 1990/05/01 در فیلد جلali.
Performance و batch
client-side یک pair سریع است؛ هزار pair در loop در JS sheet بهتر از reload UI.
عبور از مرز سال و ماههای ۳۱ روزه
diff از 1405/12/01 تا 1406/01/15 سال را cross میکند — parser jalali-moment responsibility است. Farvardin ۳۱ روز دارد؛ diff ماه به ماه manual «۳۰» غلط است.
Use case: maturity اوراق و CD
«سررسید ۱۴۰۵/۰۸/۱۰» — diff از today (jalali) تا maturity signed — negative یعنی گذشته. business-days برای coupon accrual often calendar day count convention جدا — bond doc بخوانید.
Use case: warranty دستگاه
فاکتور 1404/11/20، warranty ۲۴ ماه — end date = add months outside tool؛ then date-diff برای «چند روز مانده».
مقایسه با age میلادی در visa forms
فرم سفارت میلادی میخواهد — convert then diff gregorian tool دیگر؛ این tool فقط jalali pair.
Lease و اجارهٔ مسکن
«اجاره از 1405/03/01 به مدت ۱۲ ماه» — end date با add month در قرارداد؛ date-diff از start تا end برای «چند روز کل قرارداد» تقویمی. اگر «هر ۳۰ روز اجاره» بند جدا دارد، با diff کل قاطی نکنید.
Insurance waiting period
«انتظار ۹۰ روز تقویمی» — start = policy effective، end = start + 90 via repeated add or calendar table؛ diff sanity check.
Event countdown UI
Marketing «X روز تا کنفرانس» — abs(diff(today, event))؛ today را هر روز refresh کنید — static HTML content تاریخ today ندارد.
راهنمای قرارداد نویسی (تقویمی)
بند نمونه: «مهلت از تاریخ 1405/04/01 به مدت ۴۵ روز تقویم شمسی» — end = start + 45 calendar days via date-diff sanity (diff(start,end)=45). اگر «روز کاری» نوشتید، business-days. دو کلمهٔ مختلف، دو ابزار. در dispute، متن قرارداد بر code غلبه دارد — FinAI interpreter نیست.
تفاوت با timestamp server
ابزار date string میگیرد نه hour — دو event same jDate diff صفر حتی if hours apart.
سه سناریوی روزمره FinAI
۱) فاصلهٔ دو قسط وام شمسی: start = due قبلی، end = due بعدی — diff برای «فاصلهٔ ۳۰ یا ۳۱ روز» واقعی بین سررسیدها. ۲) مدت اقامت مهمان در هتل از ورود تا خروج jDate — abs برای invoice nights (hotel ممکن است checkout rule جدا داشته باشد). ۳) فاصله بین دو مجمع عمومی برای holder که میپرسد «چند روز از مجمع قبلی گذشته» — diff تقویمی، نه session بورس. در هر سه، روزهای کاری فقط وقتی وارد شود که سند صریح «کاری» گفته باشد.
برای audit داخلی: diff(start,end) + diff(end,start) باید صفر شود (sign flip). اگر قرارداد «حداکثر ۹۰ روز» دارد، diff از start به today را با ۹۰ compare کنید — breach boolean outside FinAI.
در وامهای قدیمی شمسی، sometimes «هر قسط ۳۰ روز بعد» نوشته شده — واقعیت تقویمی ۳۰ روز ثابت نیست؛ date-diff بین دو سررسید consecutive عدد واقعی را نشان میدهد و از تقریب ۳۰ جلوگیری میکند.
لینکهای مرتبط در ecosystem FinAI: روز کاری برای SLA، تعطیلات برای بسته بودن بازار، جدول اقساط برای سررسیدهای وام — date-diff مکمل است نه جایگزین amortization. ورودی فقط جلالی است.
جمعبندی
تفاوت دو تاریخ شمسی برای روز تقویمی جلالی است — signed و abs. نه میلادی، نه روز کاری، نه ساعت. sibling روزهای کاری برای SLA بورسی و اداری بدون جمعه؛ تعطیلات برای لیست پیشنویس ۱۴۰۵. FinAI قانون cut-off مجمع یا age قانونی تعیین نمیکند — فقط diff روز.