ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
تبدیل تاریخ میلادی به هجری شمسی
برای تبدیل تاریخ میلادی به هجری شمسی (خورشیدی) در زبان های برنامه نویسی که کتابخانه های تبدیل تاریخ به هجری را ندارند برنامه نویسان مجبورند تا از توابع و کلاس هایی که خودشان (و یا دیگران) نوشته اند استفاده کنند. در ادامه کد تبدیل تاریخ میلادی به شمسی که به زبان C نوشته شده است را می بینید. البته این کدبه راحتی داخل یک تابع قابل پیاده سازی است. همچنین می توان آن را به راحتی به زبان های دیگر انتقال داد.
int gy, gm, gd; // Gregorian Date : gy=سال میلادی, gm=ماه میلادی gd=روز میلادیe.g. gy=2017, gm=11, gd=25 int a=(14-gm)/12; int m=gm+(12*a)-3; int y=gy-a-1600; int d=(365*y)+(y/4)-(y/100)+(y/400)+((153*m+2)/5)+gd-1; int n=d-84756; int a2=n%12053; int b2=(a2%1461)+(1461*(a2/11688)); int c2=(b2%365)+(365*(b2/(1460+(365*((a2+1)/11688))))); int yy=1211+(33*(n-a2))/12053+(4*(a2-b2))/1461+(b2-c2)/365; int mm=(c2-(186*(c2/186)))/(31-(c2/186))+(6*(c2/186))+1; int dd=(c2-(186*(c2/186)))%(31-(c2/186))+1; int yday; if (mm<6) yday=(mm-1)*31+dd; else yday=186+(mm-7)*30+dd; printf("a=%d, m=%d, y=%d\n",a,m,y); printf("d=%d, n=%d\n",d,n); printf("a2=%d, b2=%d, c2=%d\n",a2,b2,c2); printf("yy=%d, mm=%d, dd=%d\n",yy,mm,dd) //Jalali Date: yy: سال هجری mm: ماه هجری dd: روز هجری |