Momentjs 显示评估少一天

Kun*_*ale 1 javascript datetime date 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);
Run Code Online (Sandbox Code Playgroud)

它提供以下对象作为 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 }
Run Code Online (Sandbox Code Playgroud)

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

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

T.J*_*der 7

从您的问题中显示的值来看,我猜您在印度,这意味着您当地的时区 (IST) 是 GMT+0530(比 GMT 早五个半小时)。当你给 Moment 一个 array 时,你给了它local time values,你不提供的任何值都默认为 0 - 在你的情况下,因为你不提供任何时间值,那就是午夜。GMT+0530 的 1 月 4 日午夜是 UTC 的 1 月 3 日 18:30。

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

var changedDt = moment.utc([hr,mnth,day]);
Run Code Online (Sandbox Code Playgroud)