Momentjs显示评估减少一天

时间:2016-01-31 18:42:37

标签: javascript date datetime datepicker momentjs

我正在使用Momentjs评估react-datetimepicker中的所选日期。但它评估的时间少于所选日期。以下是我用来评估所选日期的代码段。

var selectedDateArr = ['2016','02','04']
var yr = parseInt(selectedDateArr[0]), mnth = parseInt(selectedDateArr[1] - 1), day = parseInt(selectedDateArr[2]);
var changedDt = moment([yr,mnth,day]);
console.log('Changed Date >>> ',changedDt);

它在firefox中将以下对象作为控制台结果提供。

{ _isAMomentObject: true, _i: Date 2016-01-03T18:30:00.000Z, _isUTC: false, _pf: Object, _locale: Object, _d: Date 2016-01-03T18:30:00.000Z }

我曾尝试将日期转换为UTC,但仍然没有运气。

注意:在chrome中,它会显示正确的评估,但在将其作为minDate提供时会中断;再评估一天比选定的少。

3 个答案:

答案 0 :(得分:2)

根据你问题中显示的数值,我猜你在印度,这意味着你当地的时区(IST)是GMT + 0530(比GMT提前五个半小时)。当你give Moment an array时,你给它本地时间值,你没有提供的任何值默认为0 - 在你的情况下,因为你没有提供任何时间值那是午夜。 1月4日格林威治标准时间+ 0530午夜是1月3日18:30在UTC。

如果您希望将值视为UTC,请使用moment.utc(...)

var changedDt = moment.utc([hr,mnth,day]);

答案 1 :(得分:0)

尝试使用 var changedDt = moment.tz([年,月,日],时区)。

例如我在印度,所以我的时区将是“亚洲/加尔各答”。

答案 2 :(得分:0)

moment.unix(timestamp).utc().format('MM/DD/YYYY')
moment.utc(date).format('MM/DD/YYYY')

如果我们通过,它将对我有用。