一段时间以来,我一直在为此挠头。我在UI 的前端使用 daterangepicker.js ( http://tamble.github.io/jquery-ui-daterangepicker/ )。我的实现非常基本,可以在下面找到。问题是每当我使用 moment.unix() 转换扩展时间时,时间戳都会在输入日期前一小时返回
<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>
这里有一个示例:正如您所见,传递给我的时刻 js 的开始标记是 2017 年 10 月 2 日星期一午夜(这是正确的,反映了我在 UI 中选择的内容)
开始时间:2017 年 10 月 2 日星期一 00:00:00 GMT+0100(GMT 夏令时间){}
当我使用
var start = moment(inputData.start).unix();
它转换为 1506898800,反映 10/01/2017 @ 11:00pm (UTC)
我试过moment().utc()。
这里有任何指示吗?
PS 我知道我可以在时间戳中添加 3600,但我不想这样做,因为我确定我错过了一些相对简单的东西。
谢谢