Обработка даты и времени
Время вычисления: $now()
Текущую отметку времени возвращают две функции:
$now()— строку в формате ISO 8601.$millis()— число миллисекунд с полуночи 1 января 1970 года UTC (эпохи Unix).
Отметка захватывается в начале вычисления выражения. Все вызовы $now() и $millis() внутри одного выражения до завершения вычисления возвращают одно и то же время.
{
"invoiceTime": $now(),
"total": $sum(Account.Order.Product.(Price * Quantity)),
"closingTime": $now()
}
Например, оба временных поля могут быть "2018-12-10T13:49:51.141Z", а total — 336.36.
JSON и ISO 8601
В JSON нет встроенного типа даты/времени; общепринято хранить их строками ISO 8601:
{ "myDateTime": "2018-12-10T13:45:00.000Z" }
JSONata придерживается этого соглашения и форматирует/разбирает такие отметки функциями $toMillis() и $fromMillis().
Другие форматы
Данные могут использовать иные представления даты. Для форматирования и разбора JSONata поддерживает гибкие picture strings из спецификации XPath/XQuery fn:format-dateTime(). Подробности — у $toMillis() и $fromMillis().
$toMillis('10/12/2018', '[D]/[M]/[Y]') ~> $fromMillis('[M]/[D]/[Y]')
$toMillis('10/12/2018', '[D]/[M]/[Y]') ~> $fromMillis('[FNn], [D1o] [MNn] [YI]')
Первое преобразует европейское 10/12/2018 в американское "12/10/2018"; второе даёт "Monday, 10th December MMXVIII".