0

I have a Protractor test where I am making sure the date text in my element is equal to the current date. This doesn't always work because one value goes from UTC where the other grabs local timezone. How can I compare both these values to make sure they are the same date? Thanks.

var moment = require('moment');
var dateFormatted = moment().utcOffset(-420).format('MMM DD, YYYY');   // set to Arizona time
var dateInfo = element(by.css('.date'));
dateInfo.getText().then(function (dateText) {
  var textFormatted = moment(dateText).utcOffset(-420).format('MMM DD, YYYY');
  expect(textFormatted).toEqual(dateFormatted);
});
cocoa
  • 3,806
  • 7
  • 29
  • 56

2 Answers2

1

Convert both time to utc using moment().utc()

var moment = require('moment');
var dateFormatted = moment().utc().format('MMM DD, YYYY');   // set to UTC timezone
var dateInfo = element(by.css('.date'));
dateInfo.getText().then(function (dateText) {
  expect(moment(dateText).utc().format('MMM DD, YYYY')).toEqual(dateFormatted);
});
Aman Gupta
  • 3,627
  • 4
  • 40
  • 64
  • that doesn't work for me. i still get 'expected JAN 28, 2016 to equal JAN 27, 2016'. – cocoa Jan 27 '16 at 19:03
  • These are the values I get unformatted: "2016-01-28T07:00:00+00:00, 016-01-27T19:04:26+00:00" – cocoa Jan 27 '16 at 19:06
  • Dates are already UTC. To compare the UTC date, just use UTC methods. But two Dates on the same date in a particular time zone may not be on the same date UTC (or any other time zone). – RobG Jan 27 '16 at 23:24
  • "2016-01-28T07:00:00+00:00, 2016-01-27T19:04:26+00:00", clearly these time stamps cannot be same in 'MMM DD, YYYY' format if they have same timezone – Aman Gupta Jan 28 '16 at 05:32
0

So I figured it out. Using Aman's advice and doing moment().utc(), here's my solution:

var moment = require('moment');
var dateInfo = element(by.css('.date'));
var dateFormatted = moment().utc('MMM DD, YYYY').format('MMM DD, YYYY'); // set to UTC timezone
dateInfo.getText().then(function (dateText) {
  var textFormatted = moment().utc(dateText,'MMM DD, YYYY').format('MMM DD, YYYY');
  expect(textFormatted).toEqual(dateFormatted);
});

I used this question for a reference

Community
  • 1
  • 1
cocoa
  • 3,806
  • 7
  • 29
  • 56