%Z (since v10.11.1) is replaced by the passed-in timezone name from LiquidOption or in-place value (see TimeZone below). If passed-in timezone is an offset number instead of string, it’ll behave like %z. If there’s none passed-in timezone, it returns the runtime’s default time zone.
LiquidJS provides an additional %q flag for date ordinals. e.g. {{ '2023/02/02' | date: '%d%q of %b'}} => 02nd of Feb
Date literals are firstly converted to Date object via new Date(), that means literal values are considered in runtime’s time zone by default.
The format filter argument is optional:
If not provided, it defaults to %A, %B %-e, %Y at %-l:%M %P %z.
The above default can be overridden by dateFormat LiquidJS option.
LiquidJS date supports locale specific weekdays and month names, which will fallback to English where Intl is not supported.
Ordinals (%q) and Jekyll specific date filters are English-only.
locale can be set when creating Liquid instance. Defaults to Intl.DateTimeFormat().resolvedOptions.locale).
// equivalent to setting options.dateFormat = %d%q of %b %Y at %I:%M %P %Z {{ '1990-12-31T23:30:28Z' | date: '%d%q of %b %Y at %I:%M %P %Z', -330 }} => 01st of Jan 1991 at 05:00 am +0530;
TimeZone
During output, LiquidJS uses local timezone which can override by:
setting a timezone in-place when calling date filter, or
To get the current time, pass the special word "now" or "today" as input
Note that the value will be the current time of when the page was last generated from the template, not when the page is presented to a user if caching or static site generation is involved
Example
1 2
Last updated on: {{ "now" | date: "%Y-%m-%d %H:%M" }} => Last updated on: 2020-03-25 15:57 Last updated on: {{ "today" | date: "%Y-%m-%d %H:%M" }} => Last updated on: 2020-03-25 15:57