moment.calendar()显示“明天”而预期“今天”

时间:2017-10-02 08:49:57

标签: javascript momentjs

我正在使用moment.js在我的应用中管理我的日期。但由于某些原因,日历并不总是显示预期的结果,有时候我期待today值,我终于得到tomorrow一个(其他值似乎正确)。< / p>

作为我的函数中的入口值,我有一个时间戳,在里面运行,moment.now()来获取当天,最后使用日历函数来比较current day和我的timestamp

这是API问题吗?或者也许新的一天在12小时后计算?

// timeStamp = 1506982867000

$scope.testDate = function(timeStamp)
{
  // Getting my timeStamp into a moment
  var day = moment(timeStamp);

  // Getting the current day
  var now = moment();

  // moment.Calendar() function
  return day.calendar(now, {
    sameDay: '[Today]',
    nextDay: '[Tomorrow]',
    nextWeek: 'dddd',
    lastDay: 'dddd',
    lastWeek: 'dddd',
    sameElse: 'L'
  });

};

修改

好吧,当我试图在这个网站上查看我的约会对象时:https://www.epochconverter.com/如果是格林威治标准时间,我会得到正确的约会,而错误的约会(我在我的应用程序中找到的那个),这是格林威治标准时间2。

如何在我的日历中修改此GMT值?

2 个答案:

答案 0 :(得分:0)

我通过使用moment()。utcOffset()方法解决了这个问题。感谢Fran的帮助!

$scope.testDate = function(timeStamp)
{
  // utcOffset(a) parameter a is for GMT+a
  var day = moment(timeStamp).utcOffset(0);
  var now = moment().utcOffset(0);

  // moment.Calendar() function
  return day.calendar(now, {
    sameDay: '[Today]',
    nextDay: '[Tomorrow]',
    nextWeek: 'dddd',
    lastDay: 'dddd',
    lastWeek: 'dddd',
    sameElse: 'L'
  });

};

答案 1 :(得分:0)

如果您希望您的值代表UTC,那么只需将您的值初始化为UTC:

var day = moment.utc(timeStamp);
var now = moment.utc();

另请参阅:https://maggiepint.com/2016/05/14/moment-js-shows-the-wrong-date/