Арабская дата конвертации в Java

В дополнение к удивительным ответам выше, можно добавить еще 2 точки:

1. Семантическая разница:

Обещания могут быть уже решены при создании. Это означает, что они гарантируют условия, а не события . Если они уже решены, разрешенная функция, переданная ей, все еще вызывается.

И наоборот, обратные вызовы обрабатывают события. Итак, если событие, которое вас интересует, произошло до того, как обратный вызов был зарегистрирован, обратный вызов не вызывается.

2. Инверсия управления

Обратные вызовы включают инверсию управления. Когда вы регистрируете функцию обратного вызова с любым API, среда выполнения Javascript хранит функцию обратного вызова и вызывает ее из цикла событий, когда она готова к запуску.

См. Цикл событий Javascript для объяснения.

С помощью Promises управление выполняется с вызывающей программой. Метод .then () может быть вызван в любое время , если мы сохраним объект-обещание.

0
задан robin 6 March 2019 в 04:47
поделиться

1 ответ

Хотя я не знаю, что сделал Spring Framework и почему, я могу показать вам, как анализировать вашу строку в простой Java:

    DecimalStyle defaultDecimalStyle
            = DateTimeFormatter.ISO_LOCAL_DATE.getDecimalStyle();
    DateTimeFormatter arabicDateFormatter = DateTimeFormatter.ISO_LOCAL_DATE
            .withDecimalStyle(defaultDecimalStyle.withZeroDigit('\u0660'));

    String encodedArabicDateStr = "%D9%A2%D9%A0%D9%A1%D9%A9-%D9%A0%D9%A4-%D9%A1%D9%A5";
    String arabicDateStr
            = URLDecoder.decode(encodedArabicDateStr, StandardCharsets.UTF_8);
    LocalDate date = LocalDate.parse(arabicDateStr, arabicDateFormatter);
    System.out.println("Parsed date: " + date);

Вывод из этого фрагмента :

Дата анализа: 2019-04-15

Единственная хитрость заключается в том, чтобы сообщить форматировщику, чтобы он анализировал арабские цифры. Когда мы сообщаем ему нулевую цифру (٠ или '\u0660'), она вычисляет другие цифры.

0
ответ дан Ole V.V. 6 March 2019 в 04:47
поделиться
Другие вопросы по тегам:

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