Response Templating - Dates and Times

WireMock has two helpers for manipulating dates - now and date.

Current date/time

The now helper renders the current date/time, with the ability to specify the format (see full reference) and offset.

{{now}}
{{now offset='3 days'}}
{{now offset='-24 seconds'}}
{{now offset='1 years'}}
{{now offset='10 years' format='yyyy-MM-dd'}}

Dates can be rendered in a specific timezone (the default is UTC):

{{now timezone='Australia/Sydney' format='yyyy-MM-dd HH:mm:ssZ'}}

Pass epoch as the format to render the date as UNIX epoch time (in milliseconds), or unix as the format to render the UNIX timestamp in seconds.

{{now offset='2 years' format='epoch'}}
{{now offset='2 years' format='unix'}}

Existing date values

The date helper can be used to manipulate existing date values, changing the offset, timezone and print format in exactly the same manner as with the now helper.

{{date myDate offset='-1 days' timezone='EST' format='yyyy-MM-dd'}}

Parsing dates from strings

Dates can be parsed from other model elements. This is mostly useful when passed to the date helper for further processing:

{{date (parseDate request.headers.MyDate) offset='-1 days'}}

Specifying parser format

You can specify the format to use when parsing a date via a format string:

{{parseDate '10/11/2021' format="dd/MM/yyyy"}}

Additionally you can specify unix or epoch as the format which will interpret parse a large integer denoting (respectively) seconds or milliseconds since 1st of January 1970:

{{parseDate '1577964091000' format="epoch"}}

Output: Thu Jan 02 11:21:31 UTC 2020.

Formatting dates

Date values can be formatted to strings using the dateFormat helper. You can either select a named format from the following:

  • full: full date format. For example: Tuesday, June 19, 2012
  • long: long date format. For example: June 19, 2012
  • medium: medium date format. For example: Jun 19, 2012
  • short: short date format. For example: 6/19/12

e.g.

{{dateFormat (parseDate '2020-01-01T11:11:11Z') 'full'}} // Wednesday, January 1, 2020

Or you can specify your own format string (full reference here):

{{dateFormat (parseDate '2020-01-01T11:11:11Z') format='yyyy-MM-dd'}} // 2020-01-01

Format string reference

The following details all of the format string elements used when formatting and parsing dates and times:

Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 1996; 96
Y Week year Year 2009; 09
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day name in week Text Tuesday; Tue
u Day number of week (1 = Monday, ..., 7 = Sunday) Number 1
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08; -0800; -08:00

Truncating dates

The truncateDate helper will truncate date/times to specific points e.g.

{{truncateDate (parseDate '2021-06-14T00:00:00Z') 'last day of month'}}

Output: Wed Jun 30 00:00:00 UTC 2021.

The full list of available truncations is:

  • first minute of hour
  • first hour of day
  • first day of month
  • first day of next month
  • last day of month
  • first day of year
  • first day of next year
  • last day of year