Date Functions in Rule Expressions
In additional to traditional math expressions like addition, multiplication, division, and averaging, rule expressions provide a variety of date and time related features. For more details on how to use expressions, check out the Introduction to Expressions article.
Time Input
now()
Return: current unix timestamp (millis)date(input[, format])
Accepts aninput
date value and optionalformat
string. The default parser expects unix timestamps and ISO formatted date strings when a format string is not provided. The optionalformat
string can use the reference format values.Return: the parsed unix timestamp (millis)
Examples
date($myTimestamp) date('2022-09-23', 'YYYY-MM-DD')
Date Math
addDays(date, value)
Adds the value number of days to the base date 1 Return: unix timestamp (millis)addHours(date, value)
Adds the value number of hours to the base date 1 Return: unix timestamp (millis)addMinutes(date, value)
Adds the value number of minutes to the base date 1 Return: unix timestamp (millis)addSeconds(date, value)
Adds the value number of seconds to the base date 1 Return: unix timestamp (millis)addWeeks(date, value)
Adds the value number of weeks to the base date 1 Return: unix timestamp (millis)startOfDate(date, unit='day')
Return: timestamp at the beginning of the specified date unit 2 (default: day)endOfDate(date, unit='day')
Return: timestamp at the end of the specified date unit 2 (default: day)setDatePart(date, unit, value)
Return: timestamp with the adjusted date unit 2, 3 updated to the supplied valuegetDatePart(date, unit)
Return: numeric value indicating the specified date unit 2, 3
1The date input is a unix timestamp in millis. The system will try to parse other input formats automatically, but it’s best to provide an already parsed value which the date() function can be useful for as you can explicitly specify a parsing format.
2Valid date units include day
, date
,month
, year
, hour
, minute
, second
, week
3When using getDatePart()
or setDatePart()
, the day and month are zero based indexes.
day
= 0 = Sundaymonth
= 0 = January
Examples
addDays(now(), 1) //tomorrow (at the current time) startOfDate(addDays(now(), 1)) //midnight tonight (eg. 00:00 tomorrow) endOfDate(now(), 1) //23:59 tonight setDatePart(startOfDate(now()), 'hour', 4) //4:00 AM today getDatePart(now(), 'hour') //the current numeric hour (eg. 19 at 7:00 PM)
Date Formatting
formatDate(date, format, locale)
Theformat
string can use the reference format values. Thelocale
string should be a valid locale key.humanizeDuration(millis, showAdverbs=false)
durationAs(millis, units)
formatDuration(millis, format)
Examples
formatDate(now(), 'YYYY-MM-DD') //2022-09-23 (en-US locale default) formatDate(now(), 'LLL', 'pl') //23 września 2022 17:58 humanizeDuration(60 * 1000) // "a minute" humanizeDuration(60 * 60 * 1000, true) // "in an hour" humanizeDuration(-60 * 1000, true) // "a minute ago" durationAs(60 * 60 * 1000, 'hours') //1 formatDuration((60 * 60 * 1000) + (2 * 60 * 1000), "HH:mm") //01:02 (one hour, 2 minutes)
Date Logic
isBetweenDates(start, end)
Returnstrue
if the current date is between the providedstart
andend
dates. The provided dates should either be inYYYY-MM-DD
,MM-DD
, or millisecond format as is common with the result of other date functions. Note that the year portion is always ignored to ensure the expression will continue to work year after year.