【发布时间】:2017-03-31 15:43:32
【问题描述】:
我正在尝试使用 javascript 日期函数获取过去 7 天和接下来 7 天的日期开始数据和结束日期。
例如:今天 2017 年 3 月 31 日,当我单击上一个按钮时,它将从上一个日期开始计算,即:开始和结束日期,(2017 年 3 月 24 日至 2017 年 3 月 30 日),再次单击上一个(2017 年 3 月 17 日至 3 月 23 日) 2017)等等。
下一个按钮也会复制同样的东西..
我尝试了以下方法,但它不起作用
function getPreviousWeek(){
ProHistoryCtrl.weekPrevcount = ProHistoryCtrl.weekPrevcount + 1;
ProHistoryCtrl.weekPrevious = (-6 * ProHistoryCtrl.weekPrevcount);
getByWeek();
}
function getNextWeek(){
ProHistoryCtrl.weekPrevcount = ProHistoryCtrl.weekPrevcount - 1;
ProHistoryCtrl.weekPrevious = (-6 * ProHistoryCtrl.weekPrevcount);
getByWeek();
}
function getByWeek(){
console.log("weekpreviouscount" + ProHistoryCtrl.weekPrevcount); //-6,-12,-18,-24
console.log("weekprevious" + ProHistoryCtrl.weekPrevious); //-6,-12,-18,-24
var d2 = new Date(); // 31.01.2017
var d1 = new Date(d2);
d1.setDate(d2.getDate() - 1); // 30.01.2017
var previousWeek = '';
var current_day = '';
console.log("d2date" + d1.getDate());
console.log("week2" + ProHistoryCtrl.weekPrevious)
previousWeek = new Date(d1);
previousWeek.setDate(d1.getDate() + ProHistoryCtrl.weekPrevious); // 30-13=17
current_day = new Date(d1); // 30.01.2017
current_day.setDate(d1.getDate() + ProHistoryCtrl.weekPrevious + 6); // 30-12+5=23
console.log("currentdayprevious" + ProHistoryCtrl.weekPrevious); //-6,-12,-18,-24
var previousWeekUTCTimestamp = Math.floor(previousWeek.getTime() / 1000);
var currentUTC = Math.floor(current_day.getTime() / 1000);
console.log("previousWeekUTCTimestamp" + previousWeekUTCTimestamp);
console.log("currentUTC" + currentUTC);
var sinceUTC = previousWeekUTCTimestamp;
var untilUTC = currentUTC;
}
第一次正确的时间是 2017 年 3 月 24 日到 2017 年 3 月 30 日,下一次是 2017 年 3 月 24 日到 18 日
有什么想法吗?请
【问题讨论】:
-
可以使用外部库吗?将 moment.js 用于所有此类事情将消除许多令人头疼的问题和潜在的错误。
-
如果您想要从 3 月 17 日到 3 月 23 日,但目前是从 18 日到 24 日,为什么不从计算中减去一天?
-
@MikeC:我的逻辑有点混乱,那是你向任何人寻求帮助
-
@Whelkaholism:我很难写下一个逻辑……我在这里感到困惑
-
ProHistoryCtrl 定义在哪里? weekPrevcount 和 weekPrevious 的值是多少?两个函数都不接受任何参数,也不返回任何值。请发布一个最小的工作示例。此处回答了计算正负固定天数的日期:Add +1 to current date。
标签: javascript date datetime days