2017-02-14 115 views
0

我使用的是moment.js来计算下周的开始日期和结束日期。但现在我已经因为一些缩小问题而将其删除。使用纯javascript获取下周的开始和结束日期

我能够如下得到这个星期的开始和结束日期,

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

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

+0

你可以用我的答案代码到其他的问题吗? https://stackoverflow.com/questions/42158971/how-to-find-the-dates-of-coming-saturday-and-sunday-from-todays-date-in-typescr – Calum

回答

0

算了笔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())

+0

该代码给出了下周末不正确的结果。 var nextWeekEnd = ...行应该在'var nextWeekFrom = ...'之后,因为该行修改* date *。 – RobG

+0

@RobG你是对的。上次编辑后我搞砸了。再次感谢 – Jackowski

1

不是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; 
} 

刚才编辑的答案,这应该让你在下周一约会

+0

你不应该添加天添加由于夏令时的变化,并非所有日子的时间都是24小时。 – RobG

2

你可以使用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));

+1

lastDay不是日期类型 – Sajeetharan

+0

@RobG,我更新了我的答案。谢谢你的观点。 –

0

以下简化了代码,并提供一些解释。 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));

相关问题