C # Конвертировать DateTime.Now в арабские месяцы с арабскими цифрами

Оба вызова идентичного кода ниже, если оно уменьшено на 1, работают в Chrome 32 на моем компьютере, например. 17905 по сравнению с 17904. Если они выполняются так, они выдают ошибку «RangeError: Максимальный размер стека вызовов». Похоже, что это ограничение не является жестким, а зависит от оборудования вашего аппарата. Похоже, что если вызывается как функция, этот самоналоженный предел выше, чем если он вызывается как метод, то есть этот конкретный код использует меньше памяти при вызове как функцию.

Вызывается как метод:

var ninja = {
    chirp: function(n) {
        return n > 1 ? ninja.chirp(n-1) + "-chirp" : "chirp";
    }
};

ninja.chirp(17905);

Вызывается как функция:

function chirp(n) {
    return n > 1 ? chirp( n - 1 ) + "-chirp" : "chirp";
}

chirp(20889);
-3
задан shareef 20 March 2019 в 17:38
поделиться

1 ответ

Прежде всего, Am C # Starter, поэтому, если есть возможность редактировать код, я разместил его, пожалуйста, продолжайте и оптимизируйте его.

Читая и пробуя код, (кстати, очень старые посты здесь и там!) И после ссылки на проблема яснее,

Случай 1

Когда я использовал ниже строки, я получил 1441 محرم 24

DateTime.Now.ToString("yyyy MMMM dd", new System.Globalization.CultureInfo("ar-SA"))

Сейчас следите за MMMM и ar-SA специально, чтобы показать месяц под названием محرم .

Проблемы здесь, вы получаете 1441 на английском языке!

Итак

Случай 2

Чтобы взять эту строку шаг далее я использовал метод преобразования в арабские числа ... Этот код должен изменить любую цифру на кодировку арабский / хинди ...

public static string ConvertToEasternArabicNumerals(string input)
        {
            System.Text.UTF8Encoding utf8Encoder = new UTF8Encoding();
            System.Text.Decoder utf8Decoder = utf8Encoder.GetDecoder();
            System.Text.StringBuilder convertedChars = new System.Text.StringBuilder();
            char[] convertedChar = new char[1];
            byte[] bytes = new byte[] { 217, 160 };
            char[] inputCharArray = input.ToCharArray();
            foreach (char c in inputCharArray)
            {
                if (char.IsDigit(c))
                {
                    bytes[1] = Convert.ToByte(160 + char.GetNumericValue(c));
                    utf8Decoder.GetChars(bytes, 0, 2, convertedChar, 0);
                    convertedChars.Append(convertedChar[0]);
                }
                else
                {
                    convertedChars.Append(c);
                }
            }

            return convertedChars.ToString();
        }

Код в сочетании:

DateHelper.ConvertToEasternArabicNumerals(DateTime.Now.ToString("yyyy MMMM dd", new System.Globalization.CultureInfo("ar-SA")));
0
ответ дан shareef 20 March 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: