Jump to content

C# date time picker

- - - - -

This topic has been archived. This means that you cannot reply to this topic.
2 replies to this topic

#1
BAHAR

BAHAR

    Newbie

  • Members
  • Pip
  • 1 posts
I WANT PERSIAN DATE TIME PICKER IN C#
I USE WinPersianDateTimePicker BUT IT HAS NOT SUPPORT VALUE TIME.

I NEED HELP VERY MUCH PLZ

#2
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,831 posts
Moved to the correct forum.

How is a Persian date time picker different from a regular one?
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#3
gaylo565

gaylo565

    Programming Professional

  • Members
  • PipPipPipPipPip
  • 268 posts
If you change the default calender to the persian one than you you can simply use the regular DateTimePicker objects value property like so:

            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();


            typeof(System.Globalization.DateTimeFormatInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(info, cal);

            object obj = typeof(System.Globalization.DateTimeFormatInfo).GetField("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(obj, 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);

            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.CurrentCulture = calture;

            System.Threading.Thread.CurrentThread.CurrentUICulture = calture;

            System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat = info;

            System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat = info;

(I borrowed this code to change the default calender from a post on the msdn forum because it was much esier than trying to figure out all of the Persian characters myself)

            DateTime varDate;


            DateTimePicker dateTimePicker1 = new DateTimePicker();

            varDate = dateTimePicker1.Value;

            label1.Text = varDate.ToString();