This is a collection of date/time pipes for Angular (12+) based on Luxon.
-
Install (making sure Luxon is installed as well):
npm install --save luxon luxon-angular
or
yarn add luxon luxon-angular
If you plan to use the relative formatting pipes, also install the
relative-time-format
polyfill. -
Import
LuxonModule
:import { NgModule } from '@angular/core'; import { LuxonModule } from 'luxon-angular'; @NgModule({ imports: [ LuxonModule ] }) export class AppModule { };
-
Start using the pipes:
import { Component } from '@angular/core'; @Component({ template: ` This component was created at {{ date | dateTimeFromJsDate | dateTimeToFormat:'tt' }}! ` }) export class AppComponent { date: Date; constructor() { this.date = new Date(); } };
Transforms an arbitrarily formatted date into a DateTime that can be used with the non-parsing pipes:
{{ '02 Jan 2006' | dateTimeFromFormat:'dd LLL yyyy' }}
{{ 'January 2, 2006 3:04 PM' | dateTimeFromFormat:'LLLL d, yyyy h:mm a' }}
Transforms a HTTP-style date into a DateTime that can be used with the non-parsing pipes:
{{ 'Monday, 02-Jan-06 22:04:05 GMT' | dateTimeFromHttp }}
{{ 'Mon, 02 Jan 2006 22:04:05 GMT' | dateTimeFromHttp }}
Transforms an ISO 8601 date into a DateTime that can be used with the non-parsing pipes:
{{ '2006-01-02' | dateTimeFromIso }}
{{ '2006-01-02T15' | dateTimeFromIso }}
{{ '2006-01-02T15:04:05-07:00' | dateTimeFromIso }}
Transforms a JavaScript Date object into a DateTime that can be used with the non-parsing pipes:
{{ date | dateTimeFromJsDate }}
Transforms a timestamp in milliseconds from epoch into a DateTime that can be used with the non-parsing pipes:
{{ date | dateTimeFromMilliseconds }}
Transforms a date formatted according to RFC 2822 into a DateTime that can be used with the non-parsing pipes:
{{ 'Mon, 02 Jan 2006 15:04:05 -0700' | dateTimeFromRfc2822 }}
Transforms a SQL-style date into a DateTime that can be used with the non-parsing pipes:
{{ '2006-01-02 15:04:05.000-0700' | dateTimeFromSql }}
Transforms an ISO 8601 duration string into a Duration that can be used with the non-parsing pipes:
{{ 'P2Y4M6D' | durationFromIso }}
Transforms an ISO 8601 time string into a Duration that can be used with the non-parsing pipes:
{{ '02:04:06.800' | durationFromIsoTime }}
Transforms a duration in milliseconds into a Duration that can be used with the non-parsing pipes:
{{ 24000 | durationFromMilliseconds }}
Selects the earliest (minimum) from a list of DateTimes.
{{ [early, earliest, earlier] | dateTimeEarliest }}
Selects the latest (maximum) from a list of DateTimes.
{{ [late, latest, later] | dateTimeLatest }}
Selects the longest (maximum) from a list of Durations.
{{ [long, longest, longer] | durationLongest }}
Selects the shortest (minimum) from a list of Durations.
{{ [short, shortest, shorter] | durationShortest }}
In general, all time zone and offset operations change the DateTime’s zone but keep the underlying timestamp. For more information, see the Luxon docs.
Sets the zone of the DateTime to the local zone:
{{ date | dateTimeToLocal }}
Sets the zone of the DateTime to the Coordinated Universal Time zone:
{{ date | dateTimeToUtc }}
Transforms a DateTime into an arbitrarily formatted string:
{{ date | dateTimeToFormat:'MMMM d, yyyy' }}
Transforms a DateTime into an human-readable, internationalized string:
{{ date | dateTimeToLocaleString:DateTime.DATETIME_FULL }}
{{ date | dateTimeToLocaleString:{
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
minute: '2-digit',
timeZoneName: 'short'
} }}
The pipe takes Intl.DateTimeFormat
as a parameter.
Transforms a DateTime into an ISO 8601 date:
{{ date | dateTimeToIso }}
Also available: dateTimeToIsoDate
, dateTimeToIsoTime
, and dateTimeToIsoWeekDate
.
Transforms a DateTime into a JavaScript date:
{{ date | dateTimeToJsDate }}
Works with Angular’s DatePipe
:
{{ date | dateTimeToJsDate | date:'fullDate' }}
Transforms a DateTime into a relative time:
{{ date | dateTimeToRelative:{ unit: 'day', style: 'long' } }}
{{ date | dateTimeToRelativeCalendar:{ unit: 'month' } }}
The unit and style parameters are optional.
Transforms a DateTime into an SQL date string:
{{ date | dateTimeToSql }}
Transforms a Duration into an arbitrarily formatted string:
{{ duration | durationToFormat:'mm:ss.SSS' }}
Transforms a Duration into a human-readable string with all units included:
{{ duration | durationToHuman }}
Transforms a Duration into an ISO 8601 duration string:
{{ duration | durationToIso }}
Transforms a Duration into an ISO 8601 time string:
{{ duration | durationToIsoTime }}