PDA

View Full Version : سوال: تبدیل تاریخ شمسی به قمری



ali.bahrami
دوشنبه 11 فروردین 1399, 17:24 عصر
سلام دوستان، توی تاپیک ها جستجو کردم ولی به نتیجه ای نرسیدم
می خوام تاریخ شمسی را به قمری تبدیل کنم چه فرمولی پیشنهاد میکنید؟

the king
دوشنبه 11 فروردین 1399, 20:29 عصر
سلام دوستان، توی تاپیک ها جستجو کردم ولی به نتیجه ای نرسیدم
می خوام تاریخ شمسی را به قمری تبدیل کنم چه فرمولی پیشنهاد میکنید؟

تقویم قمری که همون System.Globalization.HijriCalendar ئه و بر اساس فرمول ریاضی و موقعیت ماه نسبت به زمین تاریخ قمری رو بدست میاره.
اما کاری به رویت ماه و وضعیت آب و هوایی و روز قدس و ... نداره، برای همین با تقویم کشوری هماهنگ نیست، باید قبل استفاده تنظیم بشه.
بر اساس اینکه کجا زندگی می کنید و رویت ماه و تقویم رسمی و ... مقدار HijriAdjustment رو بین 2- الی 2+ تنظیم می کنید که روز بدست اومده رو جلو و عقب می کنه.

var persian = new System.Globalization.PersianCalendar();
var hijri = new System.Globalization.HijriCalendar() {HijriAdjustment = -1};
var d = persian.ToDateTime(1399, 1, 11, 0, 0, 0, 0); // 1399/01/11
var h = string.Format("{0:0000}/{1:00}/{2:00}", hijri.GetYear(d), hijri.GetMonth(d), hijri.GetDayOfMonth(d));
MessageBox.Show(h);

ali.bahrami
دوشنبه 11 فروردین 1399, 20:38 عصر
تقویم قمری که همون System.Globalization.HijriCalendar ئه و بر اساس فرمول ریاضی و موقعیت ماه نسبت به زمین تاریخ قمری رو بدست میاره.
اما کاری به رویت ماه و وضعیت آب و هوایی و روز قدس و ... نداره، برای همین با تقویم کشوری هماهنگ نیست، باید قبل استفاده تنظیم بشه.
بر اساس اینکه کجا زندگی می کنید و رویت ماه و تقویم رسمی و ... مقدار HijriAdjustment رو بین 2- الی 2+ تنظیم می کنید که روز بدست اومده رو جلو و عقب می کنه.

var persian = new System.Globalization.PersianCalendar();
var hijri = new System.Globalization.HijriCalendar() {HijriAdjustment = -1};
var d = persian.ToDateTime(1399, 1, 11, 0, 0, 0, 0); // 1399/01/11
var h = string.Format("{0:0000}/{1:00}/{2:00}", hijri.GetYear(d), hijri.GetMonth(d), hijri.GetDayOfMonth(d));
MessageBox.Show(h);


ممنونم دوست عزیز