سلام ، چطوری میتونم یک ستون تاریخ میلادی رو در دیتا بیس SQL رو بصورت convert شده در DataGridView نمایش بدم ؟
الان این کد دینا رو میگیره و کل دیتا بیس رو در datagridveiw نمایش میده ، ولی ستون تاریخ تولد به میلادی هست و میخوام ستون birthday تبدیل به تاریخ شمسی بشه موقع نمایش..
من از Culture استفاده کردم و مشکلم حل شد ، ولی نمیدونم چرا روی سیستم خودم مشکل نداره هم لپ تاپ و هم کامپیوتر شخصیم ، ولی روی کامپیوتر مشتری خطا داره و فقط Culture رو خطا میگیره .. .netFrame Work 4.8 هم داره
CultureInfo info = new CultureInfo("fa-Ir") { DateTimeFormat = {Calendar = new PersianCalendar()} }; Thread.CurrentThread.CurrentCulture = info;
روی سیستم مشتری این خطا رو میده :
اون چند خط کد رو با این جایگزین کردم درست شد ولی آخر نفهمیدم چرا یک کد اگر مشکل داشته باشه باید رو همه نوع کامپیوتر ها خطا بده و اگر سالمه باید روی هر کامپیوتری کارکنه...
System.Globalization.CultureInfo calture = new System.Globalization.CultureInfo("fa-Ir"); System.Globalization.DateTimeFormatInfo info = calture.DateTimeFormat; info.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" }; info.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" }; info.AbbreviatedMonthNames = new string[] { "فروردین", "ارديبهشت", "خرداد", "تير", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" }; info.MonthNames = new string[] { "فروردین", "ارديبهشت", "خرداد", "تير", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" }; info.AMDesignator = "ق.ظ"; info.PMDesignator = "ب.ظ"; info.ShortDatePattern = "yyyy/MM/dd"; info.FirstDayOfWeek = DayOfWeek.Saturday; System.Globalization.PersianCalendar cal = new System.Globalization.PersianCalendar(); var field = typeof(System.Globalization.DateTimeFormatInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); field?.SetValue(info, cal); var fieldInfo = typeof(System.Globalization.DateTimeFormatInfo).GetField("m_cultureTableRecord", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); if (fieldInfo != null) { object obj = fieldInfo.GetValue(info); var methodInfo = obj.GetType().GetMethod("UseCurrentCalendar", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); if ( methodInfo != null) { var propertyInfo = cal.GetType().GetProperty("ID", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); if ( propertyInfo != null) methodInfo.Invoke(obj, new object[] { propertyInfo.GetValue(cal, null) }); } } var field1 = typeof(System.Globalization.CultureInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); field1?.SetValue(calture, cal); var fieldInfo1 = typeof(System.Globalization.CultureInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); fieldInfo1?.SetValue(calture, cal); System.Threading.Thread.CurrentThread.CurrentCulture = calture; System.Threading.Thread.CurrentThread.CurrentUICulture = calture; System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat = info; System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat = info;
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)