Mulesoft добавляет серийный номер даты в Excel к дате

Я читаю данные файла Excel, один из столбцов - «DateTime» (например, 01.01.1990 00:00:00), но Anypoint считывает его как строковый тип «Серийный номер даты в Excel» (например, 33257.415972222225). Как правильно преобразовать дату в DataWeave?

бывший: дата: "01.01.1990 00:00:00" как: дата {формат: "ММ / дд / гггг ЧЧ: мм: сс"} + "P $ (33257.415972222225 / 12) Г"

Не могли бы вы дать ответ на свой вопрос и отметить его как правильный?

jerney 25.10.2018 02:29

На самом деле это не сработало, поэтому я удаляю этот комментарий.

rANth 25.10.2018 19:11
Работа с датами и временем в языке Java
Работа с датами и временем в языке Java
Работа с датами и временем в языке Java была сильно переработана начиная с версии Java 8 и далее с появлением библиотеки java.time.
0
2
148
1

Ответы 1

Существует существующий ответ для преобразование дат Excel в даты Unix (время эпохи), который можно легко адаптировать к DataWeave. Обратите внимание, что в Excel в Windows и Mac используется другая дата начала, поэтому формула меняется соответственно.

сценарий

%dw 1.0
%output application/json
---
{
  dateExcelWindows: (((payload as :number) - 25569 ) * 86400 ) as :datetime,
  dateExcelMac: (((payload as :number) - 24107 ) * 86400 ) as :datetime
}

ввод (это 9 июня 2011 г., 10:30 утра в Windows Excel):

"40703.4375"`

выход:

{
   "dateExcelWindows": "2011-06-09T10:30:00Z",
   "dateExcelMac": "2015-06-10T10:30:00Z"
}

Другие вопросы по теме