【问题标题】:Get next week's start and end date using pure javascript使用纯 javascript 获取下周的开始和结束日期
【发布时间】:2017-02-14 14:30:49
【问题描述】:

我使用 moment.js 来计算下周的开始日期和结束日期。但现在由于一些缩小问题,我已将其删除。

我可以得到本周的开始和结束日期如下,

var today = new Date; 
var first = today.getDate() - today.getDay(); 
(this.fromDate = new Date(today.setDate(first)));
(this.toDate  = new Date(today.setDate(last)));

如何找到下周的开始和结束日期?

【问题讨论】:

标签: javascript date typescript


【解决方案1】:

您可以使用getFullYear()getMonth()getDate() 方法实现此目的。

function getWeekBegin() {
   var now = new Date();
   var next = new Date(now.getFullYear(), now.getMonth(), now.getDate()+(7 - now.getDay()));
   return next;
}
var firstDay = getWeekBegin();
console.log("First day: "+firstDay);
var lastDay=firstDay.setDate(firstDay.getDate() + 6);
console.log("Last day: "+new Date(lastDay));

【讨论】:

  • lastDay 不是日期类型
【解决方案2】:

不是 100% 你追求什么,但如果你稍微修改一下,你应该能够弄清楚如何

function test() {
    var today = new Date; 
    alert(getMonday(today));
}
function getMonday( date ) {
    date.setHours((24*7));
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

刚刚编辑了答案,这应该可以让你下周一约会

【讨论】:

  • 您不应该通过添加小时来添加天数,因为由于夏令时更改,并非所有天都是 24 小时。
【解决方案3】:

只需将本周开始的 7 天时间相加即可获得下一周的开始;要获得一周的结束,请在一周的开始加上 6 天。

var date = new Date;
var nextWeekStart = date.getDate() - date.getDay() + 7;
var nextWeekFrom = new Date(date.setDate(nextWeekStart));
var nextWeekEnd = date.getDate() - date.getDay() + 6;
var nextWeekTo = new Date(date.setDate(nextWeekEnd));

console.log('nextWeekFrom: ' + nextWeekFrom.toString())
console.log('nextWeekTo  : ' + nextWeekTo.toString())

【讨论】:

  • 此代码给出的下周末结果不正确。 var nextWeekEnd = ... 行应该在 var nextWeekFrom = ... 之后,因为该行修改了 date
  • @RobG 你是对的。我上次编辑后搞砸了。再次感谢
【解决方案4】:

下面简化了代码并提供了一些解释。 setDate 方法修改日期并返回新的时间值,因此可用于修改日期并一次性创建副本。

// Get current date
var d = new Date();

// Set to next Sunday and copy
var startOfWeek = new Date(d.setDate(d.getDate() + 7 - d.getDay()));

// Set to the following Saturday
d.setDate(d.getDate() + 6);

console.log('Start of week: ' + startOfWeek.toString());
console.log('End of week  : ' + d.toString());

// The following shows the dates formatted and in the host default language
// Support for toLocaleString options may be lacking though
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
console.log('Start of week: ' + startOfWeek.toLocaleString(undefined, options));
console.log('End of week  : ' + d.toLocaleString(undefined, options));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多