Изменить время: сейчас () меньше одного часа - PullRequest
0 голосов
/ 05 июня 2019

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

Мой код выглядит так:

{
    "type": "dateRange",
    "dateRange": "${time:extractStringFromDateTZ(time:now(), 'UTC', 'yyyy-MM-dd\'T\'HH:mm:ss.SSS')}/${time:extractStringFromDateTZ(time:now(), 'UTC', 'yyyy-MM-dd\'T\'HH:mm:ss.SSS')}"
}

Это дает мне следующее:

{
    "type": "dateRange",
    "dateRange": "2019-04-01T00:00:00.000/2019-04-01T00:00:00.000"
}

Что я пытаюсь сделать, так это снять 1 час с первого свидания. Вот что я попробовал:

До:

${time:extractStringFromDateTZ(time:now(), 'UTC', 'yyyy-MM-dd\'T\'HH:mm:ss.SSS')}

После того, как:

${time:millisecondsToDateTime(time:dateTimeToMilliseconds(time:now()) - (3600), 'UTC', 'yyyy-MM-dd\'T\'HH:mm:ss.SSS')}

Хотя этот код кажется правильным, он говорит, что он недействителен. Пожалуйста, кто-нибудь может помочь мне понять, как изменить код «до», чтобы он стал через 1 час после этого.

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Во-первых, как уже упоминалось в комментариях к вашему сообщению, 1 час равен 3600000 миллисекунд

Тогда я никогда не работал с StreamSets, но смотрел на документ :

подпись метода, который вы пытаетесь использовать, - time:dateTimeToMilliseconds(<Date object>), и он возвращает Long Его описание:

Преобразует объект Date в эпоху или время UNIX в миллисекундах.

То есть вы не можете вызвать его с этими параметрами , 'UTC', 'yyyy-MM-dd\'T\'HH:mm:ss.SSS'

Это может быть правильный синтаксис, который он ожидает:

${time:millisecondsToDateTime(time:dateTimeToMilliseconds(time:now()) - (3600000))}

Вы должны использовать другие функции, если хотите использовать часовой пояс:

time:millisecondsToDateTime(<long>) возвращает Date object а также time:extractStringFromDateTZ(<Date object>, <time zone>, <format string>) возвращает строку

Разве вы не можете связать их так?

${time:extractStringFromDateTZ(
    time:millisecondsToDateTime(time:dateTimeToMilliseconds(time:now()) - 3600000), 
    'UTC', 
    'yyyy-MM-dd\'T\'HH:mm:ss.SSS')}
1 голос
/ 05 июня 2019

вы можете попробовать следующим образом:

Преобразуйте вашу дату в миллисекунды, затем ( dateMilliseconds - 3600000) Результат необходимо преобразовать в дату.

...