PDA

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



alonemm
چهارشنبه 10 آذر 1389, 13:34 عصر
باسلام:
من یک دیتاسورس و یک گرید دارم.
میخام در موقع بایند شدن این گرید از دیتاسورس تاریخ رو از میلادی به شمسی تبدیل کنم و نمایش بدم توی گرید.

mamaliy
چهارشنبه 10 آذر 1389, 17:42 عصر
سلام دوست من.
براي اين كار من از LINQ استفاده مي كنم به اين شكل:





DataTable dt = new DataTable("dataTable1");
dt.Columns.Add("naame", typeof(string));
dt.Columns.Add("tarikh", typeof(DateTime));
DataRow dr1 = dt.NewRow();
dr1["naame"] = "mohamad1";
dr1["tarikh"] = DateTime.Now;
DataRow dr2 = dt.NewRow();
dr2["naame"] = "mohamad2";
dr2["tarikh"] = DateTime.Now.AddDays(5.0);
dt.Rows.Add(dr1);
dt.Rows.Add(dr2);



اين بالايي يك نمونه بود براي ديتاسورس .
حالا با LINQ يه query فيلتر شده ازش ميگيرم. به اين شكل:





System.Globalization.PersianCalendar persian =
new System.Globalization.PersianCalendar();
var newTarikh =
from DT in dt.AsEnumerable()
select new { naame = DT["naame"],
tarikh = persian.GetDayOfMonth((DateTime)(DT["tarikh"])) +
"/" + persian.GetMonth((DateTime)(DT["tarikh"])) +
"/" + persian.GetYear((DateTime)(DT["tarikh"])) };
BindingSource b = new BindingSource();
b.DataSource = newTarikh;
gridView1.DataSource = b;
gridView1.DataBind();

raziee
چهارشنبه 10 آذر 1389, 18:19 عصر
باسلام:
من یک دیتاسورس و یک گرید دارم.
میخام در موقع بایند شدن این گرید از دیتاسورس تاریخ رو از میلادی به شمسی تبدیل کنم و نمایش بدم توی گرید.
از این کد استفاده کن.
(کد از همین سایت گرفته شده.)
System.Globalization.CultureInfo calture = new System.Globalization.CultureInfo("fa-IR");
System.Globalization.DateTimeFormatInfo info = calture.DateTimeFormat;

info.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
info.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
info.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
info.AbbreviatedMonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.MonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.AMDesignator = "ق.ظ";
info.PMDesignator = "ب.ظ";
info.ShortDatePattern = "yyyy/MM/dd";
info.LongDatePattern = "dddd dd MMMM yyyy";
info.FirstDayOfWeek = DayOfWeek.Saturday;
System.Globalization.PersianCalendar cal = new System.Globalization.PersianCalendar();
typeof(System.Globalization.DateTimeFormatInfo).Ge tField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (info, cal);
object obj = typeof(System.Globalization.DateTimeFormatInfo).Ge tField("m_cultureTableRecord", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (info);
obj.GetType().GetMethod("UseCurrentCalendar", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Invoke(ob j, new object[] { cal.GetType().GetProperty("ID", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (cal, null) });
typeof(System.Globalization.CultureInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (calture, cal);
System.Threading.Thread.CurrentThread.CurrentCultu re = calture;
System.Threading.Thread.CurrentThread.CurrentUICul ture = calture;
System.Globalization.CultureInfo.CurrentCulture.Da teTimeFormat = info;
System.Globalization.CultureInfo.CurrentUICulture. DateTimeFormat = info;