تاریخهای ماهانه از ۳۱ ژانویه
برنامهٔ ماهانهٔ ۳۱ ژانویه به یک قاعدهٔ صریح برای تاریخ گمشده نیاز دارد، چون فوریه ۳۱ ندارد. با انتخاب پایان ماه، چهار تاریخ اول در سال ۲۰۲۶ ۳۱ ژانویه، ۲۸ فوریه، ۳۱ مارس و ۳۰ آوریل هستند. با انتخاب رد کردن، فوریه و هر ماه دیگری که ۳۱ ندارد حذف میشود.
تقویم
برای هر سطر یک VEVENT تمامروز مطابق استاندارد، با مقدار DTEND انحصاریِ روز بعد و شناسههای پایدار رویداد.
همهٔ تاریخهای برنامه
| ۱ | 2026-01-31 | شنبه | ۰ | تاریخ مبنا |
| ۲ | 2026-02-28 | شنبه | ۲۸ | به پایان ماه منتقل شد |
| ۳ | 2026-03-31 | سهشنبه | ۵۹ | دقیقاً روز مبنا |
| ۴ | 2026-04-30 | پنجشنبه | ۸۹ | به پایان ماه منتقل شد |
| ۵ | 2026-05-31 | یکشنبه | ۱۲۰ | دقیقاً روز مبنا |
| ۶ | 2026-06-30 | سهشنبه | ۱۵۰ | به پایان ماه منتقل شد |
| ۷ | 2026-07-31 | جمعه | ۱۸۱ | دقیقاً روز مبنا |
| ۸ | 2026-08-31 | دوشنبه | ۲۱۲ | دقیقاً روز مبنا |
| ۹ | 2026-09-30 | چهارشنبه | ۲۴۲ | به پایان ماه منتقل شد |
| ۱۰ | 2026-10-31 | شنبه | ۲۷۳ | دقیقاً روز مبنا |
| ۱۱ | 2026-11-30 | دوشنبه | ۳۰۳ | به پایان ماه منتقل شد |
| ۱۲ | 2026-12-31 | پنجشنبه | ۳۳۴ | دقیقاً روز مبنا |
هر نامزد از روز اصلی ۳۱ مشتق میشود، بنابراین ۲۸ فوریه باعث نمیشود مارس هم ۲۸ام تکرار شود.
حالت پایان ماه هر رخداد کوتاهشده را در ستون «قاعدهٔ تاریخ» گزارش میکند.
حالت رد کردن به جستوجوی ماههای نامزد ادامه میدهد تا تعداد تاریخهای واقعی درخواستی ساخته شود.
چگونگی کار
مراحل انجام کار
- تاریخ اول بهعنوان مبنای تقویم میلادی خوانده میشود، سپس پیش از ساختن برنامه، فاصله و تعداد رخدادهای درخواستی به بازهٔ مجاز محدود میشوند.
- برای روزها و هفتهها، تعداد ثابتی روز تقویمی UTC اضافه میشود. برای ماهها و سالها، هر نامزد از سال، ماه و روز اصلی مشتق میشود، نه از نتیجهٔ قبلی.
- اگر ماه نامزد روز مبنا را نداشته باشد، دقیقاً مطابق انتخاب شما، یا از آخرین روز آن استفاده میشود یا آن نامزد کنار گذاشته میشود. این کار تا رسیدن به تعداد تاریخهای واقعی درخواستی ادامه مییابد.
- سطرها بهصورت مؤلفههای جداگانهٔ VEVENT تمامروز طبق RFC ۵۵۴۵ نوشته میشوند. DTSTART خود تاریخ است، DTEND تاریخ بعدی است چون پایان رویداد تمامروز انحصاری است، و هر خط محتوا در ۷۵ اکتت UTF-۸ تا میشود.
فرضها
- تقویم میلادی و فقط تاریخ است. هیچ ساعتی از روز، منطقهٔ زمانی، تغییر ساعت تابستانی یا یادآوریای برای استنباط وجود ندارد.
- تاریخ اول رخداد شمارهٔ یک است. بنابراین دوازده تاریخ یازده فاصله دارد، نه دوازده.
- حالت پایان ماه هرگز مبنا را تغییر نمیدهد. ۳۱ ژانویه میتواند ۲۸ فوریه شود و سپس به ۳۱ مارس برگردد، چون هر نامزد از روز اصلی ۳۱ مشتق میشود.
- حالت رد کردن یک نامزد گمشده را رد میکند، نه یک فاصله را. در ماهها یا سالهای نامزد بعدی ادامه میدهد تا تعداد تاریخهای واقعی درخواستی فراهم شود.
- سالهای تقویمی بالاتر از ۹۹۹۹ را نمیتوان با مقدار DATE چهاررقمی RFC ۵۵۴۵ نشان داد و تولید نمیشوند.
پرسشهای رایج
چرا اضافه کردن مکرر یک ماه با استفاده از روز مبنا فرق دارد؟
اگر یک ماه به ۲۸ فوریه اضافه شود، همهٔ ماههای بعد میتوانند روی ۲۸ بمانند. مشتق کردن هر تاریخ از مبنای اصلی ۳۱ ژانویه از این جابهجایی دائمی جلوگیری میکند.
برای ۲۹ فوریه در برنامهٔ سالانه چه میشود؟
حالت پایان ماه در سالهای غیرکبیسه از ۲۸ فوریه استفاده میکند و در سالهای کبیسه به ۲۹ فوریه برمیگردد. حالت رد کردن فقط سالهایی را شامل میشود که ۲۹ فوریه دارند.
منابع
روش کامل، مثال محاسبهشده و همهٔ فرضهای این نتیجه در این صفحه آمده است: زمانبندی تاریخهای تکرارشونده.