سلام
من تاریخ شمسی میخام تو سیستم ذخیره کنم ولی وقتی پابلیش میکنم تاریخ میلادی نشون داده میشه!!!
تو سیستم خودم بصورت شمسیه!!!!
من گزینه Region سرور رو هم Iran و Persian گذاشتم ولی تاریخ رو بصورت میلادی نشون میده
در ضمن کلاس PersianCulture هم تو پروژه ام هست
و اینم اضافه کردم تو پروژه
public static string ToPersianDate( this DateTime t) { System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar(); return string.Format("{0}/{1}/{2}", pc.GetYear(t).ToString(), pc.GetMonth(t).ToString(), pc.GetDayOfMonth(t).ToString()); }
تاریخ رو بصورت Session ارسال میکنم بصورت زیر
System.Web.HttpContext.Current.Session["TodayDate"] = DateTime.Now.ToString("yyy/MM/dd");
دریافت هم بصورت:"
var today = '@Session["TodayDate"]'; $("#DateCreate").val(today);
این تو سیستم من اوکی و شمسیه ولی تو سرور وقتی پابلیش کردم میلادیه
گلاس persianCulture بپیوست می باشد
کلاس persianCulture
using System; using System.Collections.Generic; using System.Globalization; using System.Reflection; namespace GSD.Globalization { public class PersianCulture : CultureInfo { private readonly Calendar cal; private readonly Calendar[] optionals; public PersianCulture() : this("fa-IR", true) { } public PersianCulture(string cultureName, bool useUserOverride) : base(cultureName, useUserOverride) { //Temporary Value for cal. cal = base.OptionalCalendars[0]; //populating new list of optional calendars. var optionalCalendars = new List<Calendar>(); optionalCalendars.AddRange(base.OptionalCalendars); optionalCalendars.Insert(0, new PersianCalendar()); Type formatType = typeof(DateTimeFormatInfo); Type calendarType = typeof(Calendar); PropertyInfo idProperty = calendarType.GetProperty("ID", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo optionalCalendarfield = formatType.GetField("optionalCalendars", BindingFlags.Instance | BindingFlags.NonPublic); //populating new list of optional calendar ids var newOptionalCalendarIDs = new Int32[optionalCalendars.Count]; for (int i = 0; i < newOptionalCalendarIDs.Length; i++) newOptionalCalendarIDs[i] = (Int32)idProperty.GetValue(optionalCalendars[i], null); optionalCalendarfield.SetValue(DateTimeFormat, newOptionalCalendarIDs); optionals = optionalCalendars.ToArray(); cal = optionals[0]; DateTimeFormat.Calendar = optionals[0]; DateTimeFormat.MonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" }; DateTimeFormat.MonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" }; DateTimeFormat.AbbreviatedMonthNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" }; DateTimeFormat.AbbreviatedMonthGenitiveNames = new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" }; DateTimeFormat.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" }; DateTimeFormat.ShortestDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" }; DateTimeFormat.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" }; DateTimeFormat.AMDesignator = "ق.ظ"; DateTimeFormat.PMDesignator = "ب.ظ"; /* DateTimeFormat.ShortDatePattern = "yyyy/MM/dd"; DateTimeFormat.LongDatePattern = "yyyy/MM/dd"; DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy/MM/dd"}, 'd'); DateTimeFormat.SetAllDateTimePatterns(new[] {"dddd, dd MMMM yyyy"}, 'D'); DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'y'); DateTimeFormat.SetAllDateTimePatterns(new[] {"yyyy MMMM"}, 'Y'); */ } public override Calendar Calendar { get { return cal; } } public override Calendar[] OptionalCalendars { get { return optionals; } } internal static DateTime PersianToGregorianUS(DateTime date) { throw new NotImplementedException(); } } }
شما مستقیم از خود Persian استفاده کنید
public static string ToPersianDate( this DateTime t) { System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar(); return string.Format("{0}/{1}/{2}", pc.GetYear(t).ToString(), pc.GetMonth(t).ToString(), pc.GetDayOfMonth(t).ToString()); }
نیازی به اینکار نیست و از همون کلاس PersianCulture استفاده کنید یعنی تاریخ رو تبدیل نکنید و همونجوری میلادی در سشن بزارید
بعد موقع نمایش خود PersianCulture براتون شمسی میکنه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)