PDA

View Full Version : سوال: یه مشکل عجیب با HijriCalendar



jalalx
سه شنبه 07 دی 1389, 11:33 صبح
سلام
دوستان، کسی تا بحال با کلاس تقویم هجری قمری، توی دات نت استفاده کرده؟ می تونید منو راهنمایی کنید؟
ماجرا از این قراره که من یه تقویم درست کردم، روزهای خورشیدی و میلادی رو بدون مشکل نشون میده، ولی با جابجایی در ماه ها، فقط فقط روز های قمری رو اشتباه نشون میده!!!
این بلاک کد، وظیفه ی مقدار دهی به روزهای تقویم رو داره! متغیر عمومی currentDate تاریخ جاری تقویم(نه تاریخ فعلی، چون طرف می تونه بین ماه ها و سال ها جابجا بشه) رو نشون میده.

بی زحمت یه نیگا بندازید:



DateTime monthBegin = Utility.DateTimeUtility.GetPersianMonthBegin(curre ntDate);
DayOfWeek beginWeekDay = pc.GetDayOfWeek(monthBegin);

int currentPersianMonth = pc.GetMonth(currentDate);
int currentPersianYear = pc.GetYear(currentDate);
int startPersianDay = (int)Utility.DateTimeUtility.GregorianDay2PersianD ay(beginWeekDay);

int currentArabicMonth = hc.GetMonth(currentDate);
int currentArabicYear = hc.GetYear(currentDate);

int persianMonthDayslength = pc.GetDaysInMonth(currentPersianYear, currentPersianMonth);
bool isLeapYear = pc.IsLeapYear(currentPersianYear, PersianCalendar.PersianEra);

for (int i = 0; i < startPersianDay; i++)
{
days[i] = new DayItem()
{
IsFriday = i % 7 == 6,
OwnerPanel = this
};
}

for (int i = startPersianDay; i <= persianMonthDayslength + startPersianDay - 1; i++)
{
int persianDay = (i - startPersianDay + 1);

days[i].IsValid = true;

days[i].PersianDay = Utility.CultureUtility.GetPersianDigitedString(per sianDay.ToString());


int arabicDay = hc.GetDayOfMonth(monthBegin);
days[i].HejriDay = Utility.CultureUtility.GetArabicDigitedString(arab icDay.ToString());

days[i].GregorianDate = monthBegin;
days[i].GregorianDay = Controls.Utility.CultureUtility.GetEnglishDigitedS tring(monthBegin.Day.ToString());

monthBegin = monthBegin.AddDays(1.0);
}


ناگفته نماند من از این روش برای جابجایی در بین تاریخ ها استفاده می کنم، مثلا برا جابجایی 1 ماه به جلو از این روش استفاده می کنم:



currentDate = currentDate.AddMonths(1);
InitializeDays()


منتظر هستم،
پیشاپیش ممنون

daszarrin
چهارشنبه 20 اردیبهشت 1391, 12:36 عصر
متاسفانه من هم الان این مشکل رو پیدا کردم و چرا هنوز کسی به این سوال جواب نداده؟! واقعا کسی به این مشکل برنخورده بوده تاحالا؟
من با persiancalendar به راحتی تاریخ رو به شمسی تبدیل میکنم ولی در تبدیل تاریخ به قمری با hijricalendar به یک مشکل عجیب برخورد میکنم
مثلا امروز 4 رجبه، میزنه 3 رجب، یا تعداد روزهای ماه رو اشتباه نشون میده مثلا ماه رجب تو تقویم ما 30 روزه است، 29 روزه نشون میده!!
لطفا یکی راهنمایی کنه