Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

angular2-moment

urish48.2kMIT1.9.0TypeScript support: included

Moment.JS pipes for Angular2 (timeago and more)

angular2, momentjs

readme

angular2-moment

moment.js pipes for Angular

Build Status

This module works with Angular 2.0 and above.

For the AngularJS version of this module, please see angular-moment.

Installation

npm install --save angular2-moment

If you use typescript 1.8, and typings, you may also need to install typings for moment.js:

typings install --save moment

For System.js users:

First you need to install moment:

npm install moment --save

Don't forget to update your systemjs.config.js:

packages: {
            app: {
                main: './main.js',
                defaultExtension: 'js'
            },
            'moment': {
                main: './moment.js',
                defaultExtension: 'js'
            },
            'angular2-moment': {
                main: './index.js',
                defaultExtension: 'js'
            }
        }

Usage

Import MomentModule into your app's modules:

import { MomentModule } from 'angular2-moment';

@NgModule({
  imports: [
    MomentModule
  ]
})

This makes all the angular2-moment pipes available for use in your app components.

Available pipes

amTimeAgo pipe

Takes an optional omitSuffix argument that defaults to false.

@Component({
  selector: 'app',
  template: `
    Last updated: {{myDate | amTimeAgo}}
  `
})

Prints Last updated: a few seconds ago

@Component({
  selector: 'app',
  template: `
    Last updated: {{myDate | amTimeAgo:true}}
  `
})

Prints Last updated: a few seconds

amCalendar pipe

Takes optional referenceTime argument (defaults to now) and formats argument that could be output formats object or callback function. See momentjs docs for details.

@Component({
  selector: 'app',
  template: `
    Last updated: {{myDate | amCalendar}}
  `
})

Prints Last updated: Today at 14:00 (default referenceTime is today by default)

@Component({
  selector: 'app',
  template: `
    Last updated: <time>{{myDate | amCalendar:nextDay }}</time>
  `
})
export class AppComponent {
  nextDay: Date;

  constructor() {
      this.nextDay = new Date();
      nextDay.setDate(nextDay.getDate() + 1);
  }
}

Prints Last updated: Yesterday at 14:00 (referenceTime is tomorrow)

@Component({
  selector: 'app',
  template: `
    Last updated: <time>{{myDate | amCalendar:{sameDay:'[Same Day at] h:mm A'} }}</time>
  `
})

Prints Last updated: Same Day at 2:00 PM

amDateFormat pipe

@Component({
  selector: 'app',
  template: `
    Last updated: {{myDate | amDateFormat:'LL'}}
  `
})

Prints Last updated: January 24, 2016

amParse pipe

Parses a custom-formatted date into a moment object that can be used with the other pipes.

@Component({
  selector: 'app',
  template: `
    Last updated: {{'24/01/2014' | amParse:'DD/MM/YYYY' | amDateFormat:'LL'}}
  `
})

Prints Last updated: January 24, 2016

amLocal pipe

Converts UTC time to local time.

@Component({
  selector: 'app',
  template: `
    Last updated: {{mydate | amLocal | amDateFormat: 'YYYY-MM-DD HH:mm'}}
  `
})

Prints Last updated 2016-01-24 12:34

amLocale pipe

To be used with amDateFormat pipe in order to change locale.

@Component({
  selector: 'app',
  template: `
    Last updated: {{'2016-01-24 14:23:45' | amLocale:'en' | amDateFormat:'MMMM Do YYYY, h:mm:ss a'}}
  `
})

Prints Last updated: January 24th 2016, 2:23:45 pm

amFromUnix pipe

@Component({
  selector: 'app',
  template: `
    Last updated: {{ (1456263980 | amFromUnix) | amDateFormat:'hh:mmA'}}
  `
})

Prints Last updated: 01:46PM

amDuration pipe

@Component({
  selector: 'app',
  template: `
    Uptime: {{ 365 | amDuration:'seconds' }}
  `
})

Prints Uptime: 6 minutes

amDifference pipe

@Component({
  selector: 'app',
  template: `
    Expiration: {{nextDay | amDifference: today :'days' : true}} days
  `
})

Prints Expiration: 1 day

amAdd and amSubtract pipes

Use these pipes to perform date arithmetics. See momentjs docs for details.

@Component({
  selector: 'app',
  template: `
    Expiration: {{'2017-03-17T16:55:00.000+01:00' | amAdd: 2 : 'hours' | amDateFormat: 'YYYY-MM-DD HH:mm'}}
  `
})

Prints Expiration: 2017-03-17 18:55

@Component({
  selector: 'app',
  template: `
    Last updated: {{'2017-03-17T16:55:00.000+01:00' | amSubtract: 5 : 'years' | amDateFormat: 'YYYY-MM-DD HH:mm'}}
  `
})

Prints Last updated: 2012-03-17 16:55

amFromUtc pipe

Parses the date as UTC and enables mode for subsequent moment operations (such as displaying the time in UTC). This can be combined with amLocal to display a UTC date in local time.

@Component({
  selector: 'app',
  template: `
    Last updated: {{ '2016-12-31T23:00:00.000-01:00' | amFromUtc | amDateFormat: 'YYYY-MM-DD' }}
  `
})

Prints Last updated: 2017-01-01

amUtc pipe

Enables UTC mode for subsequent moment operations (such as displaying the time in UTC).

@Component({
  selector: 'app',
  template: `
    Last updated: {{ '2016-12-31T23:00:00.000-01:00' | amUtc | amDateFormat: 'YYYY-MM-DD' }}
  `
})

Prints Last updated: 2017-01-01

Complete Example

import { NgModule, Component } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { MomentModule } from 'angular2-moment';

@Component({
  selector: 'app',
  template: `
    Last updated: <b>{{myDate | amTimeAgo}}</b>, <b>{{myDate | amCalendar}}</b>, <b>{{myDate | amDateFormat:'LL'}}</b>
  `
})
export class AppComponent {
  myDate: Date;

  constructor() {
    this.myDate = new Date();
  }
}

@NgModule({
  imports: [
    BrowserModule,
    MomentModule
  ],
  declarations: [ AppComponent ]
  bootstrap: [ AppComponent ]
})
class AppModule {}

platformBrowserDynamic().bootstrapModule(AppModule);

Demo

See online demo on Plunker

changelog

Changelog

1.9.0 - 2018-05-03

  • Fix: update momentjs version (#190)
  • Fix: amTimeAgo pipe updates it's output when locale changes (#188, contributed by lukasz-kusnierz)

1.8.0 - 2018-01-23

  • Fix: Remove node_modules from compiled version (#187, contributed by wachri)

1.7.1 - 2017-12-22

  • Fix bug where FromUtcPipe was being imported instead of exported (#180, contributed by fshin123)
  • test: fix amLocal tests to pass regardless of timezone

1.7.0 - 2017-08-19

1.6.0 - 2017-07-18

1.5.0 - 2017-07-14

  • Add amLocale pipe (#155, contributed by FallenRiteMonk)
  • Migrate testing framework to jest

1.4.0 - 2017-06-18

  • Add amParse pipe to enable parsing of custom-formatted date string (#148, contributed by vin-car)

1.3.3 - 2017-03-18

  • Fix: amCalendar causes protractor to timeout on waiting async Angular (#135, contributed by romanovma)

1.3.2 - 2017-03-17

  • Fix: Add missing amAdd and amSubtract pipes to the NgModule (#134, contributed by datencia)

1.3.1 - 2017-03-16

  • Add missing amAdd and amSubtract pipes (fixes #130)

1.3.0 - 2017-03-10

  • Enable Angular 4 as peer dependency

1.2.0 - 2017-02-09

1.1.0 - 2017-01-09

Happy new year!

  • Add referenceTime and format args to amCalendar (#64, contributed by irsick)
  • Add amAdd and amSubtract pipes (#113, contributed by dustin486)
  • Fix: Do not import whole Rx.js library (#117, contributed by FabienDehopre)

1.0.0 - 2016-12-01

Promoted 1.0.0-rc.1 to final release

1.0.0-rc.1 - 2016-11-11

*** Breaking change: Requires moment 2.16.0 or newer

  • Fix “Expression has changed after it was checked” (#111, contributed by nithril)
  • Fix "Module 'moment' has no exported member 'UnitOfTime'" (#112)

1.0.0-beta.6 - 2016-10-24

*** Breaking change: typescript sources are no longer published in the npm package

  • Inline sources in the source map file, should fix #96.
  • Handle undefined dates in amDateFormat pipe (#105, contributed by amcdnl)

1.0.0-beta.5 - 2016-10-13

*** Breaking change: source files renamed, which could affect your imports:

import { TimeAgoPipe } from 'angular-moment/TimeAgoPipe';

now becomes:

import { TimeAgoPipe } from 'angular-moment/time-ago.pipe';

All changes:

  • Rename source files to follow Angular 2 Style Guide conventions
  • Require moment >= 2.13.0, and remove @types/moment from our dependencies (as it is already included in moment)

1.0.0-beta.4 - 2016-10-06

  • Add support for server side pre-rendering (#89, contributed by https://github.com/jmezach)
  • Fix a bug caused TimeAgo and Calendar pipes not to update automatically (#94)
  • Add @types/moment to package dependencies (see #91)

1.0.0-beta.3 - 2016-10-04

  • Fix exports for Rollup / Ionic 2 users (#86, contributed by TheMadBug)
  • Protractor fix: run long standing timeouts outside of angular zones (#74, contributed by tiagoroldao)

1.0.0-beta.2 - 2016-10-01

  • Switch to Typescript 2.0
  • Angular 2 AoT (Ahead of Time) template compilation support (#68)
  • Removed impure flags from pure Pipes: amDateFormat and amDifference (#75, contributed by tiagoroldao)

1.0.0-beta.1 - 2016-08-16

  • Support angular-2.0.0-rc.5 NgModules, see README for details.

0.8.2 - 2016-08-01

  • Add amDifference pipe (#54, contributed by josx)

0.8.1 - 2016-07-03

  • Add omitSuffix parameter to amTimeAgo pipe (#47, contributed by bzums)

0.8.0 - 2016-05-22

  • Publish typescript sources under src folder, should fix Ionic 2 issues such as #28 and #33.

0.7.0 - 2016-05-03

  • Align with the angular 2.0.0-rc.0 and the new angular packaging system

0.6.0 - 2016-04-28

  • Align with angular 2.0.0-beta.16 (#32, contributed by fknop)

0.5.0 - 2016-04-08

  • Move angular2 from npm dependencies to peerDependencies (see #24)
  • Add amDuration pipe (#29, contributed by xenolinguist)

0.4.3 - 2016-03-06

  • include amFromUnix pipe in the package's exports
  • publish our typings.json to npm

0.4.2 - 2016-02-24

0.4.1 - 2016-02-21

  • Don't run typings install on postinstall (fixes #13)

0.4.0 - 2016-02-16

  • Switch from tsd to typings, stop publishing the moment.js typings to npm.
  • Additional unit-tests

Note: You may need to manually install moment.js typings, by running typings install --save moment in your project directory.

0.3.0 - 2016-01-27

  • add amDateFormat pipe (#9, contributed by andreialecu)
  • refactor: remove the supports() from all the pipes (it is no longer used as of angular2-beta)

0.2.1 - 2016-01-16

  • bugfix: wrong method name for cleanup, caused resource leak (#8, contributed by andreialecu)

0.2.0 - 2016-01-12

0.1.1 - 2015-12-18

  • Fix 'Cannot use in app due to triple-slash references' typescript error (#2)

0.1.0 - 2015-12-15

  • Align with angular 2.0.0-beta.0

0.0.5 - 2015-11-12

  • Align with angular-2.0.0-alpha.46

0.0.4 - 2015-10-25

  • Add ES5 transpiled version and typescript definitions (.d.ts) file to the published npm package

0.0.3 - 2015-10-22

  • Align with angular-2.0.0-alpha.44

0.0.2 - 2015-09-18

  • Align with angular-2.0.0-alpha.37

0.0.1 - 2015-08-25

  • Initial release