تقویم شمسی و میلادی چه فرقی دارند؟
تقویم رسمی ایران (هجری خورشیدی) بر پایهی گردش زمین به دور خورشید است و سال از لحظهی اعتدال بهاری شروع میشود. شش ماه اول ۳۱ روز، پنج ماه بعد ۳۰ روز و اسفند ۲۹ روز است و در سال کبیسه ۳۰ روز میشود. تقویم میلادی هم خورشیدی است، ولی سالش از اول ژانویه شروع میشود و طول ماههایش فرق دارد. برای همین تبدیل این دو با یک عدد ثابت ممکن نیست و نیاز به محاسبه دارد.
معادل اول ماههای شمسی
| ماه شمسی | روزها | شروع تقریبی میلادی |
|---|---|---|
| فروردین | ۳۱ | ۲۱ مارس |
| اردیبهشت | ۳۱ | ۲۱ آوریل |
| خرداد | ۳۱ | ۲۲ مه |
| تیر | ۳۱ | ۲۲ ژوئن |
| مرداد | ۳۱ | ۲۳ ژوئیه |
| شهریور | ۳۱ | ۲۳ اوت |
| مهر | ۳۰ | ۲۳ سپتامبر |
| آبان | ۳۰ | ۲۳ اکتبر |
| آذر | ۳۰ | ۲۲ نوامبر |
| دی | ۳۰ | ۲۲ دسامبر |
| بهمن | ۳۰ | ۲۱ ژانویه |
| اسفند | ۲۹ یا ۳۰ | ۲۰ فوریه |
تاریخ شمسی در جاوااسکریپت
نیازی به کتابخانهی سنگین نیست؛ مرورگرها تقویم شمسی را خودشان میشناسند:
const d = new Date();
new Intl.DateTimeFormat('fa-IR', {
weekday: 'long', day: 'numeric', month: 'long', year: 'numeric'
}).format(d);
// پنجشنبه ۱۴ آبان ۱۴۰۵
new Intl.DateTimeFormat('fa-IR-u-nu-latn', {
year: 'numeric', month: '2-digit', day: '2-digit'
}).format(d);
// 1405/08/14 تاریخ شمسی در PHP
با افزونهی intl که روی بیشتر هاستها فعال است:
$f = new IntlDateFormatter('fa_IR@calendar=persian', IntlDateFormatter::FULL,
IntlDateFormatter::NONE, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL);
echo $f->format(time()); // پنجشنبه ۱۴ آبان ۱۴۰۵ برای نمایش عددها به فارسی یا انگلیسی از تبدیل اعداد فارسی کمک بگیر. در پروژههای راستچینسازی و سایت دوزبانه تاریخها بهطور خودکار در نسخهی فارسی شمسی و در نسخهی انگلیسی میلادی نمایش داده میشوند.