Я обнаружил, что для @Stefan Haberl ?long
работает с датами, чтобы получить то же значение, что и java.util.Date.getTime()
, как Long
. Однако мне нужно было немного больше объяснений, чтобы можно было сравнить даты или изменить даты.
Вот суть:
?long
= java.util.Date.getTime()
возвращает время эпохи в миллисекундах
- На данный момент вы можете добавлять / вычитать любое количество миллисекунд из этого числа для вашей манипуляции
Мне нравится работать в секундах, а не в миллисекундах (меньше ненужных нулей, меня не волнуют миллисекунды и т. Д.), Что выглядит следующим образом:
[#function convertToUnix date]
[#return (date?date?long / 1000)]
[/#function]
[#-- Output Unix Timestamp --]
${convertToUnix(.now)}
На данный момент, 86400
= 1 день (потому что мы сейчас в «секундах»), так что вы можете просто добавить / вычесть это, чтобы манипулировать датой.
[#assign
day = 86400
week = 7 * day
avgMonth = 365.25 / 12 * day
testingEndOfDay = convertToUnix(.now) < (convertToUnix(sameDay) + day)
testingYesterday = convertToUnix(.now) < (convertToUnix(yesterday) + day)
]
${testingEndOfDay?c} # true, .now is less than the end of the day
${testingYesterday?c} # false, .now is greater than the end of yesterday
Примечание : я игнорирую время суток, мы получили даты, которые начались в 12:00, и хотели проверить на .now
на конец дня.
Теперь, если я хочу вернуть дату из формата Unix (в секундах), я могу преобразовать ее обратно, используя ?number_to_date
встроенный
[#assign
nowAsUnix = convertToUnix(.now)
prettyDate = (nowAsUnix * 1000)?number_to_date
]
Примечание : я открыт для правок / улучшений, так как не уверен, почему многое из этого потребовалось ¯ \ _ (ツ) _ / ¯