jalalx
سه شنبه 07 دی 1389, 12: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()
منتظر هستم،
پیشاپیش ممنون
دوستان، کسی تا بحال با کلاس تقویم هجری قمری، توی دات نت استفاده کرده؟ می تونید منو راهنمایی کنید؟
ماجرا از این قراره که من یه تقویم درست کردم، روزهای خورشیدی و میلادی رو بدون مشکل نشون میده، ولی با جابجایی در ماه ها، فقط فقط روز های قمری رو اشتباه نشون میده!!!
این بلاک کد، وظیفه ی مقدار دهی به روزهای تقویم رو داره! متغیر عمومی 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()
منتظر هستم،
پیشاپیش ممنون