JSにおけるDateオブジェクトのいくつかの使用法


最近仕事中にこのような二つの要求があります.
1.Dateの対象を与え、その時間の所在月の初日と最後の日を探し出す.
2.Dateの対象を与え、その時間の所在週の初日と最後の日を探し出す
 
需要の1月の最初の日は簡単です.apiの中にset Dateの方法があります.
set Date方法を使う前に、get Dateを見てください.
var date = new Date();
console.log(date);
// Sat Jul 18 2015 16:55:23 GMT+0800 (China Standard Time)

date.getDate();
// 18
get Dateが戻ってくるのは一ヶ月の何日目(1から)です.
これで困ります.set Date(1)を通じて初日に設定すればいいです.(戻りはミリ秒です.)
new Date(date.setDate(1));
// Wed Jul 01 2015 16:55:55 GMT+0800 (China Standard Time)
帰ってきたのは当月の一日目です.最後の日はどうしますか?ハハ、月を取って、今月の何日間を見ますか?もし2月なら、うるう年かどうかを判断します.面倒くさい.実はsetDateを再利用するパラメータは0から始まります.結果として現れたのはこの場合です.
var date = new Date();
console.log(date);
// Sat Jul 18 2015 17:07:48 GMT+0800 (China Standard Time)
console.log(new Date(date.setDate(0)));
// Tue Jun 30 2015 17:07:48 GMT+0800 (China Standard Time)
 
セットしておいて(0)最初に考えた今月の初日ではなく、先月の最後の日(以前は分かりませんでしたが)を設定してからこの方法を考えました.
var date = new Date();
console.log(date);
// Sat Jul 18 2015 17:11:31 GMT+0800 (China Standard Time)
console.log(new Date(date.setMonth(date.getMonth() + 1, 0)));
// Fri Jul 31 2015 17:11:31 GMT+0800 (China Standard Time)
 成功は一ヶ月の最後の日になります.
セットDate(-1)を設定すると、先月の最後から二日目になります.
var date = new Date();
console.log(date);
// Sat Jul 18 2015 17:18:14 GMT+0800 (China Standard Time)
console.log(new Date(date.setDate(-1)));
// Mon Jun 29 2015 17:18:14 GMT+0800 (China Standard Time)
 
 
月の初日最後の日は探しました.その週の初日と最後の日は?javascriptではgetDayの方法を提供しています.setDayの方法は提供されていません.大丈夫です.一週間で7日間は変わりません.一ヶ月を使わないでください.30日もあります.31日もあります.28,29日もあります.
getDayの戻り値は0(日)--6(土)です.このように、次のような方法があります.
 
 
var date = new Date();
console.log(date);
// Sat Jul 18 2015 17:24:27 GMT+0800 (China Standard Time)

console.log(new Date(date.getTime() - 86400000 * date.getDay()));
// Sun Jul 12 2015 17:24:27 GMT+0800 (China Standard Time)

console.log(new Date(date.getTime() + 86400000 * (6 - date.getDay())));
// Sat Jul 18 2015 17:24:27 GMT+0800 (China Standard Time)
 
これで解決した上の問題です.
 
ps:その後、set Month()のパラメータの設定0(1月)--11(12月)を試しましたが、-1、-2または13を設定したら?
var date = new Date();
console.log(date);
// Sat Jul 18 2015 17:31:18 GMT+0800 (China Standard Time)

console.log(new Date(date.setMonth(-1)));
// Thu Dec 18 2014 17:31:18 GMT+0800 (China Standard Time)
 昨年の最後の月(12月)に戻ったとみられ、設定-2では昨年末から2番目の月(11月)に戻る.
var date = new Date();
console.log(date);
// Sat Jul 18 2015 17:34:33 GMT+0800 (China Standard Time)

console.log(new Date(date.setMonth(12)));
// Mon Jan 18 2016 17:34:33 GMT+0800 (China Standard Time)
 
設定12は次の年の最初の月(1月)に戻り、設定13を設定すると次の年の2番目の月(2月)に戻ります.
 
ツッコミを入れる:
なぜgetMonth、getDay、getHours、getMinutes、getSeconds、getMillsecondsの戻り値はすべて0から始まります.