Как определить и преобразовать частичную дату - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть различные форматы неполных дат, например, мм / гг, ммм гггг и т. Д. Как определить и преобразовать частичную дату в формат гггг-мм ???

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Как уже упоминалось, вы не можете использовать этот тип принуждения без дня в качестве части даты, поэтому я думаю, что лучший вариант - это добавить фиктивное значение дня, а затем принудительно привести к любому формату, который вам нужен. Просто запомните значение по умолчанию для пустых значений, так как попытка объединения в нулевое значение приведет к ошибке вашего скрипта. Например:

%dw 2.0
output application/json

fun formatDate(date: String): String = 
    (date ++ "/01") as Date {format: "MM/yy/dd"} as String {format: "yyyy-MM"}
---
formatDate(payload)
0 голосов
/ 06 февраля 2020

Есть две проблемы: 1) Как определить правильный шаблон для каждой даты, 2) Только месяц и год не делают дату, день отсутствует. Это означает, что функции даты DataWeave не будут работать.

1) Вы можете использовать описанную в статье базы знаний https://help.mulesoft.com/s/article/Parsing-variable-format-date-strings-using-DataWeave использование регулярных выражений для анализа каждого формата, чтобы увидеть, какое совпадение и инкапсулировать его в функцию. Эта статья предназначена для Mule 3, поэтому, если вы используете Mule 4 (вы должны упомянуть версию Mule в вопросе для получения лучших результатов), вам нужно перенести пример.

2) Вы можете объединить фиктив дата в месячном году, чтобы преобразовать его в полный день, прежде чем пытаться использовать шаблон для преобразования в ожидаемый выходной шаблон.

...