【问题标题】:Convert two different offsets to the same UTC date将两个不同的偏移量转换为相同的 UTC 日期
【发布时间】:2016-05-04 20:27:18
【问题描述】:

我有一个量角器测试,我确保元素中的日期文本等于当前日期。这并不总是有效,因为一个值来自 UTC,而另一个值获取本地时区。如何比较这两个值以确保它们是相同的日期?谢谢。

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);
});

【问题讨论】:

  • 您是否尝试使用isSame
  • 您将时区与偏移量混淆了,它们相关但不同。
  • @Artem 我以前不知道,但我试过了,结果是假的
  • @torazaburo 好的,那么差异对我有什么帮助?
  • 它对你没有帮助。这是一个术语问题。只是吹毛求疵。

标签: javascript date timezone momentjs


【解决方案1】:

使用moment().utc() 将两个时间都转换为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);
});

【讨论】:

  • 这对我不起作用。我仍然得到“预计 2016 年 1 月 28 日等于 2016 年 1 月 27 日”。
  • 这些是我未格式化的值:"2016-01-28T07:00:00+00:00, 016-01-27T19:04:26+00:00"
  • 日期已经是 UTC。要比较 UTC 日期,只需使用 UTC 方法。但是特定时区中同一日期的两个日期可能不在同一日期 UTC(或任何其他时区)。
  • "2016-01-28T07:00:00+00:00, 2016-01-27T19:04:26+00:00",显然这些时间戳在 'MMM DD 中不能相同,如果它们具有相同的时区,则为 YYYY' 格式
【解决方案2】:

所以我想通了。使用 Aman 的建议并执行 moment().utc(),这是我的解决方案:

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);
});

我用这个question作为参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 2019-09-07
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多