From 1db44c31687a616a1a069f151a561132b4d62dc5 Mon Sep 17 00:00:00 2001 From: "Reichenbach, Michael" Date: Tue, 15 May 2018 12:36:11 +0200 Subject: [PATCH] fix(dateadapter): moment dates not in utc format Moment DateAdapter should create dates in utc format to avoid time zone collisions when passing date to servers Closes #7167 --- .../adapter/moment-date-adapter.spec.ts | 6 +++++- src/material-moment-adapter/adapter/moment-date-adapter.ts | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/material-moment-adapter/adapter/moment-date-adapter.spec.ts b/src/material-moment-adapter/adapter/moment-date-adapter.spec.ts index feba4da338a9..8536bfe4e58f 100644 --- a/src/material-moment-adapter/adapter/moment-date-adapter.spec.ts +++ b/src/material-moment-adapter/adapter/moment-date-adapter.spec.ts @@ -143,7 +143,7 @@ describe('MomentDateAdapter', () => { }); it('should create Moment date', () => { - expect(adapter.createDate(2017, JAN, 1).format()).toEqual(moment([2017, JAN, 1]).format()); + expect(adapter.createDate(2017, JAN, 1).format()).toEqual(moment.utc([2017, JAN, 1]).format()); }); it('should not create Moment date with month over/under-flow', () => { @@ -164,6 +164,10 @@ describe('MomentDateAdapter', () => { expect(adapter.createDate(100, JAN, 1).year()).toBe(100); }); + it('should create Moment date in utc format', () => { + expect(adapter.createDate(2017, JAN, 5).isUTC()).toBeTruthy(); + }); + it("should get today's date", () => { expect(adapter.sameDate(adapter.today(), moment())) .toBe(true, "should be equal to today's date"); diff --git a/src/material-moment-adapter/adapter/moment-date-adapter.ts b/src/material-moment-adapter/adapter/moment-date-adapter.ts index caf36dfbf6ad..4e64a393105b 100644 --- a/src/material-moment-adapter/adapter/moment-date-adapter.ts +++ b/src/material-moment-adapter/adapter/moment-date-adapter.ts @@ -130,7 +130,7 @@ export class MomentDateAdapter extends DateAdapter { throw Error(`Invalid date "${date}". Date has to be greater than 0.`); } - let result = moment({year, month, date}).locale(this.locale); + let result = moment.utc({year, month, date}).locale(this.locale); // If the result isn't valid, the date must have been out of bounds for this month. if (!result.isValid()) {