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

#mule #locale #dataweave #anypoint-studio #mulesoft

Вопрос:

Я работаю над проблемой, когда мне нужно получить дату из базы данных и преобразовать название месяца на определенный язык. Похоже, он отлично работает для всех языков, кроме арабского.

Я использовал :

 %var newDate = '2045-12-20' as :date{format : "yyyy-MM-dd"}
 
 %var actualDate = newDate as :string{format : "yyyy/MMM/dd", locale :"ar"}
 

Однако вывод, который я получаю, находится в формате гггг/дд/ММ. Я даже попытался переформатировать вывод, преобразовав его обратно в актуальное состояние, но он выдает ошибку «Не удается принудить строку к дате».

Ответ №1:

Обработка даты DataWeave основана на пакете Java 8 java.time. Документация класса java.time.формат.DateTimeFormatter -используется для форматирования дат — указывает, что при использовании языкового стандарта:

Метод withLocale возвращает новый формат, который переопределяет языковой стандарт. Языковой стандарт влияет на некоторые аспекты форматирования и синтаксического анализа. Например, ofLocalizedDate предоставляет форматировщик, который использует формат даты, заданный для конкретной локали.

Таким образом, казалось бы, что при использовании языкового стандарта следует ожидать, что шаблон форматирования будет переопределен. Возможно, вы захотите использовать сценарий Groovy, сценарий MEL или метод Java для реализации формата по вашему желанию.