Jquery Daterangepicker/Moment JS-错误的时间戳
我已经为这件事挠头好一阵子了。我在UI的前端使用daterangepicker.js()。我的实现非常基本,可以在下面找到。问题是,每当我使用moment.unix()转换扩展时间时,时间戳就会返回到输入日期前一小时Jquery Daterangepicker/Moment JS-错误的时间戳,jquery,momentjs,daterangepicker,bootstrap-daterangepicker,Jquery,Momentjs,Daterangepicker,Bootstrap Daterangepicker,我已经为这件事挠头好一阵子了。我在UI的前端使用daterangepicker.js()。我的实现非常基本,可以在下面找到。问题是,每当我使用moment.unix()转换扩展时间时,时间戳就会返回到输入日期前一小时 <script type="text/javascript"> $("#date-range").daterangepicker({ datepickerOptions : { numberOfMonths : 1,
<script type="text/javascript">
$("#date-range").daterangepicker({
datepickerOptions : {
numberOfMonths : 1,
},
presetRanges: [{
text: 'Last 7 Days',
dateStart: function(){return moment().subtract('days', 7)},
dateEnd: function() { return moment() }
},{
text: 'Last 30 Days',
dateStart: function(){return moment().subtract('days', 30)},
dateEnd: function() { return moment() }
},{
text: 'Last 3 months',
dateStart: function(){return moment().subtract('days', 90)},
dateEnd: function() { return moment() }
},{
text: 'Last 6 months',
dateStart: function(){return moment().subtract('days', 180)},
dateEnd: function() { return moment() }
},{
text: 'This Year',
dateStart: function(){return moment().startOf('year')},
dateEnd: function() { return moment() }
}],
change:function(event, data){
// gets inputted dates
var inputData = $('#date-range').daterangepicker('getRange');
console.log(inputData);
// formats dates into unix time stamps
var start = moment(inputData.start).unix();
var end = moment(inputData.end).unix();
console.log(start);
// get current URL of the page (without query string)
var currentUrl = location.protocol+'//'+location.host+location.pathname;
// create new url
var newUrl = currentUrl+'?start='+start+'&end='+end;
// redirect to new URL
//window.location.href = newUrl;
}
});
</script>
转换为1506898800,反映2017年1月10日晚上11:00(UTC)
我已经尝试了矩().utc()
这里有什么指示吗
PS我知道我可以在时间戳中添加3600,但我不想这样做,因为我肯定我遗漏了一些相对简单的东西
谢谢首先,
2017年10月2日星期一00:00:00 GMT+0100(GMT夏令时)
等于
2017年10月1日星期日23:00:00 GMT+0000(UTC)
转换为UTC时
秒,.unix()将返回从1970年开始相对于UTC时间的秒数。时间戳没有时区
解决方案是将时区固定到指定的时区,并使用最安全的时区(UTC,无DST开关)进行固定。要做到这一点,请尝试在初始化日期选择器之前包含到页面并运行此代码一次:
moment.tz.setDefault("UTC");
这样,您的所有日期都将与unix时间戳兼容。请注意,
1506898800
等于2017-10-01T23:00:00 UTC
,这与2017-10-02T00:00:00+0100
@VincenzoC如何获得时刻JS以返回此结果相同。我已经尝试了片刻。本地()。只有这样才能将3600添加到时间戳中吗?对不起,我不明白您期望的结果是什么。如果要将inputData.start
解析为UTC,请在datepicker js中选择start:Mon Oct 02 2017 00:00:00 GMT+0100(GMT夏令时){}时使用.Hi@VincenzoC。我希望返回的unix时间戳反映的是10月2日星期一,而不是10月1日星期日23:00。我也尝试过。utc,但日期一直返回到23:00的第一个
moment.tz.setDefault("UTC");