Календарь Хиджры на 1 день раньше.

как исправить календарь хиджры на 1 день раньше?

Сегодня мое время = 23 июля 2013 г., вторник
А время по исламскому календарю = 14 рамадан 1434 г. (согласно это

Мой календарь показывает 15 рамаданов вместо 14. Однако я не уверен, моя ли это вина или вина сайта. Кто-нибудь может подтвердить сегодняшнюю дату Рамадана?

lblgreg.Text = DateTime.Today.ToString("dd/MM/yyyy");

Сегодняшняя дата:

DateTime today = DateTime.Today;

Преобразование григорианского календаря в Хибри:

CultureInfo Hijri = CultureInfo.CreateSpecificCulture("ar-SA");

        string datetoday_day = today.ToString("dd", Hijri);
        string datetoday_month = today.ToString("MM", Hijri);
        string datetoday_year = today.ToString("yyyy", Hijri);

        int month_check = int.Parse(datetoday_month);

Оператор Switch для значения месяцев для переключения на текстовый месяц:

switch (month_check) {
            case 01:
                {
                    lbldate.Text  = datetoday_day + " Muharram " + datetoday_year;
                    break;
                }
            case 02:
                {
                    lbldate.Text = datetoday_day + " Safar " + datetoday_year;
                    break;
                }
            case 03:
                {
                    lbldate.Text = datetoday_day + " Rabi Al-Awwal " + datetoday_year;
                    break;
                }
            case 04:
                {
                    lbldate.Text = datetoday_day + " Rabi Al-Akhar " + datetoday_year;
                    break;
                }
            case 05:
                {
                    lbldate.Text = datetoday_day + " Jumada Al-Awwal " + datetoday_year;
                    break;
                }
            case 06:
                {
                    lbldate.Text = datetoday_day + " Jumada Al-Akhirah " + datetoday_year;
                    break;
                }
            case 07:
                {
                    lbldate.Text = datetoday_day + " Rajab " + datetoday_year;
                    break;
                }
            case 08:
                {
                    lbldate.Text = datetoday_day + " Shaban " + datetoday_year;
                    break;
                }
            case 09:
                {
                    lbldate.Text = datetoday_day + " Ramadan " + datetoday_year;
                    break;
                }
            case 10:
                {
                    lbldate.Text = datetoday_day + " Shawwal " + datetoday_year;
                    break;
                }
            case 11:
                {
                    lbldate.Text = datetoday_day + " Dhul-Qadah " + datetoday_year;
                    break;
                }
            case 12:
                {
                    lbldate.Text = datetoday_day + " Dhul-Hijjah " + datetoday_year;
                    break;
                }
        }

person Belzelga    schedule 23.07.2013    source источник
comment
Не по теме - но вам следует рассмотреть возможность установки локальной переменной месяца, которая будет меняться в вашем операторе switch, а затем установить текст lbl после переключателя Edit Я также нашел этот класс, который может помочь вам еще больше со всеми преобразованиями   -  person Sayse    schedule 23.07.2013


Ответы (3)


Вместо этого используйте UmAlQuraCalendar.

var UmAlQuraCalendar = new UmAlQuraCalendar();
CultureInfo Hijri = new CultureInfo("ar-SA")  
{ 
    DateTimeFormat = { Calendar = UmAlQuraCalendar } 
};
person Faisal    schedule 13.08.2013
comment
Календарь культуры ar-SA по умолчанию — UmAlQuraCalendar. Явное указание UmAlQuraCalendar ничего не изменит. - person Ahmed; 05.05.2016

используйте HijriAdjustment и установите его от -2 до 2, как это

System.Globalization.HijriCalendar hej = new System.Globalization.HijriCalendar();
    hej.HijriAdjustment =-2;
person hmfarimani    schedule 12.10.2014
comment
Календарь по умолчанию культуры ar-SA, для которого были заданы вопросы, — это System.Globalization.UmAlQuraCalendar, который не совпадает с System.Globalization.HijriCalendar. - person Ahmed; 05.05.2016

Проверьте код ниже

using System.Globalization;
//.......
var arDateTimeFormat= new CultureInfo("ar").DateTimeFormat;
arDateTimeFormat.Calendar = new HijriCalendar { HijriAdjustment = -1}; //set HijriAdjustment between -2 to 2
arDateTimeFormat.AbbreviatedMonthNames = new []{"Muharram", "Safar", "Rabi Al-Awwal", "Rabi Al-Akhar", "Jumada Al-Awwal", "Jumada Al-Akhirah", "Rajab", "Shaban", "Ramadan", "Shawwal", "Dhul-Qadah", "Dhul-Hijjah", string.Empty};
lbldate.Text = DateTime.Now.ToString("dd MMM, yyyy", arDateTimeFormat);
person Taha Azab    schedule 29.01.2018