104

重複の可能性:
JavaScript で日付から日数を引く

基本的に 2 日前の日付を返す JavaScript があります。それは次のとおりです。

var x;
var m_names = new Array("January", "February", "March", 
    "April", "May", "June", "July", "August", "September", 
    "October", "November", "December");

var d = new Date();
var twoDaysAgo = d.getDate()-2;  //change day here
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var x = twoDaysAgo + "-" + m_names[curr_month] + "-" + curr_year;

document.write(x);

今日が 2012 年 12 月 12 日であるとすると、上記は 2012 年 12 月 10 日の日付を返します。新しい月に進むとき、または日を-2から-15に変更するときに、これが動的に機能するとは思いません。毎月3日からの勤務となります。

これを変更して、今日が 2012 年 12 月 12 日の場合、15 日前の日付を 2012 年 11 月 27 日に返すようにするにはどうすればよいですか?

どんな助けでも感謝します。ありがとう!私はJavascriptの初心者です。

4

2 に答える 2

182

日付オブジェクトがある場合は、日付から2を引くことにより、2日前に設定できます。

var d = new Date();
d.setDate(d.getDate() - 2);
console.log(d.toString());

// First of month
var c = new Date(2017,1,1); // 1 Feb -> 30 Jan
c.setDate(c.getDate() - 2);
console.log(c.toString());

// First of year
var b = new Date(2018,0,1); // 1 Jan -> 30 Dec
b.setDate(b.getDate() - 2);
console.log(b.toString());

于 2012-12-12T11:23:23.223 に答える
47

You can do the following

​var date = new Date();
var yesterday = date - 1000 * 60 * 60 * 24 * 2;   // current date's milliseconds - 1,000 ms * 60 s * 60 mins * 24 hrs * (# of days beyond one to go back)
yesterday = new Date(yesterday);
console.log(yesterday);​

The Date is available as a number in miliiseconds, you take today subtract two days and create a new date using that number of milliseconds

于 2012-12-12T11:15:06.883 に答える