این تابع تاریخ میلادی را دریافت کرده و تاریخ شمسی آن را برمی گرداند. این تابع عدد ماه و روز را بصورت ۲ رقمی برگشت می دهد. به عنوان مثال اگر تاریخ ۲/۸/۹۰ باشد آن را بصورت ۰۲/۰۸/۹۰ برمی گرداند.
Private string Shamsi_Date(DateTime md)
{
PersianCalendar PersiaC = new PersianCalendar();
try
{
string day = "", Month = "";
day = (PersiaC.GetDayOfMonth(md) < 10) ? "0" + PersiaC.GetDayOfMonth(md).ToString() : PersiaC.GetDayOfMonth(md).ToString();
Month = (PersiaC.GetMonth(md) < 10) ? "0" + PersiaC.GetMonth(md).ToString() : PersiaC.GetMonth(md).ToString();
return PersiaC.GetYear(md).ToString() + "/" + Month.ToString() + "/" +
day.ToString();
}
catch (Exception ex)
{
FMessageBox.Show(ex.Message, " ", FMessageBoxButtons.OK, FMessageBoxIcons.Error);
return "";
}
}
حالا از تابع بالا برای تبدیل تاریخ استفاده می کنیم.این برنامه رو در رویداد CellFormatting مربوط به دیتا گرید بصورت زیر می نویسیم. در این برنامه تابع تبدیل تاریخ در کلاس Date_ قرار دارد و نیز DateInsert و DateRecive نام 2 ستون در دیتاگرید میباشند که می خواهیم تاریخ این ستونها را بصورت شمسی نمایش دهیم.
private void Datagv1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
Date_ objDate = new Date_();
if (e.Value != null)
{
if (Datagv1.Columns[e.ColumnIndex].Name == "DateInsert")
{
try
{
e.Value = objDate.Shamsi_Date(Convert.ToDateTime(DateTime.Now));
}
catch
{
}
}
if (Datagv1.Columns[e.ColumnIndex].Name == "DateRecive")
{
try
{
e.Value = objDate.Shamsi_Date(Convert.ToDateTime(e.Value));
}
catch
{
}
}
}
}