Как преобразовать григорианскую дату (средство выбора даты) в шамси?

#c# #datetimepicker #persian-calendar

#c# #datetimepicker #персидский-календарь

Вопрос:

Я использую средство выбора даты в качестве входных данных для выбранной даты. Я хочу преобразовать выбранную дату в эквивалентную ей дату Шамси (персидскую). Я попробовал этот код:

 private void button2_Click(object sender, EventArgs e)
    {
        string[] Gregorian = Convert.ToString(dateTimePicker1.Value.ToShortDateString()).Split('/');
        PersianCalendar persian = new PersianCalendar();
        label4.Text = string.Format("{0}/{1}/{2}", persian.GetYear(Convert.ToInt32(Gregorian[2]), persian.GetMonth(Convert.ToInt32(Gregorian[0]), persian.GetDayOfMonth(Convert.ToInt32(Gregorian[1])));
    }
 

Но у него есть красное подчеркивание в Convert.ToInt32(Gregorian[1]) разделе. IDE сообщает: «невозможно преобразовать из ‘int’ в ‘system.Дата и время ‘.
Пожалуйста, помогите мне.

Комментарии:

1. Пожалуйста, укажите любые ошибки, о которых сообщает IDE, в виде текста. «У него есть красное подчеркивание» — это не очень хороший отчет об ошибке.

2. Календарь принимает даты и время для используемого метода получения дня / месяца / года. Но вы берете Datetime, создаете из него строку и делаете из нее int. Просто заполните dateTimePicker1.Value в эти методы.

3. IDE сообщает: «Невозможно преобразовать из ‘int’ в ‘system. Дата и время ‘.

Ответ №1:

Я попробовал это:

        private void button2_Click(object sender, EventArgs e)
    {
        
        PersianCalendar persian = new PersianCalendar();
        label4.Text = string.Format("{0}/{1}/{2}", persian.GetYear(dateTimePicker1.Value), persian.GetMonth(dateTimePicker1.Value), persian.GetDayOfMonth(dateTimePicker1.Value));
    }