2017-09-06 35 views
2

我试图从用户那里获取航班的日期,而且datepicker总是将日期设置为用户时区的日期时间对象,从而导致发送给服务器的日期错误。 尝试使用ng-model-options="{ timezone: 'utc' }"角度物料日期选择器时区忽略?

但是然后用户在选择日期(日期显示为用户选择之前一天显示的日期)后看到错误的日期。

我如何告诉datepicker完全忽略时区 - 如果不可能我可以在FE/BE上做些什么来将此日期转换为非时区日期?

我知道我可以将它转换为FE上的Posix,但是一旦我做到了,日期选择器尖叫它需要日期对象。

在此先感谢...

+0

看看这个库: https://momentjs.com/它用于管理JS中的日期(您可以在FE中使用,也可以在节点中使用BE),查看api文档,可以转换时区和任何您想要的内容,我希望这会对您有所帮助 – Kalamarico

回答

0

我有完全相同的问题,我最后我们使用此代码

Date.prototype.toJSON = function() { 
    var timezoneOffsetInHours = -(this.getTimezoneOffset()/60); //UTC minus local time 
    var sign = timezoneOffsetInHours >= 0 ? '+' : '-'; 
    var leadingZero = (timezoneOffsetInHours < 10) ? '0' : ''; 

    //It's a bit unfortunate that we need to construct a new Date instance 
    //(we don't want _this_ Date instance to be modified) 
    var correctedDate = new Date(this.getFullYear(), this.getMonth(), 
    this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds(), 
    this.getMilliseconds()); 
    correctedDate.setHours(this.getHours() + timezoneOffsetInHours); 
    var iso = correctedDate.toISOString().replace('Z', ''); 

    return iso + sign + leadingZero + Math.abs(timezoneOffsetInHours).toString() + ':00'; 
} 

其从该其他SO质疑How to JSON stringify a javascript Date and preserve timezone

相关问题