Jquery Daterangepicker/Moment JS-错误的时间戳

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,

我已经为这件事挠头好一阵子了。我在UI的前端使用daterangepicker.js()。我的实现非常基本,可以在下面找到。问题是,每当我使用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>
转换为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");