0

私はしばらくの間、これについて頭を悩ませてきました。UI のフロント エンドでdaterangepicker.js ( http://tamble.github.io/jquery-ui-daterangepicker/ ) を使用しています。私の実装はかなり基本的なもので、以下で見つけることができます。問題は、moment.unix() を使用して拡張時間を変換するたびに、入力した日付の 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>

出力例は次のとおりです。ご覧のとおり、js に渡された開始スタンプは、2017 年 10 月 2 日月曜日の真夜中です (これは正しく、UI で選択したものを反映しています)。

開始: 2017 年 10 月 2 日月曜日 00:00:00 GMT+0100 (GMT 夏時間) {}

私が使うとき

var start = moment(inputData.start).unix();

2017 年 10 月 1 日午後 11 時 (UTC) を反映する 1506898800 に変換されます。

moment().utc() を試しました。

ここにポインタはありますか?

PSタイムスタンプに3600を追加できることは承知していますが、比較的単純なものが欠けていると確信しているため、この方法で追加したくないと思います。

ありがとう

4

1 に答える 1