私はしばらくの間、これについて頭を悩ませてきました。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を追加できることは承知していますが、比較的単純なものが欠けていると確信しているため、この方法で追加したくないと思います。
ありがとう