回答:
あなたのための3つのオプション:
Date
オブジェクトのみを使用(ライブラリなし):#1に対する私の以前の答えは間違っていました(24時間追加され、夏時間への移行と夏時間からの移行が考慮されませんでした。CleverHumanは、2010年11月7日の東部タイムゾーンでは失敗すると指摘しました)。代わりに、Jigarの答えは、ライブラリなしでこれを行う正しい方法です。
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
JavaScriptの日付オブジェクトはロールオーバーに優れているため、これは月(または年)の最後の日でも機能します。
(この回答は現在受け入れられているため、削除できません。受け入れられる前に、OPにJigarを受け入れることを提案しましたが、おそらくリストの項目#2または#3についてこれを受け入れました。)
var today = moment();
var tomorrow = moment(today).add(1, 'days');
(つまり注意してくださいadd
あなたがそうではなく、新しいインスタンスを返すよりも、上でそれを呼び出す修正にインスタンスをtoday.add(1, 'days')
修正するでしょうtoday
。私たちは上のクローニングOPで始まる理由のvar tomorrow = ...
。)
var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();
Date
コンストラクターに渡すことができます(new Date(year, month, date)
); 仕様のセクション15.9.2.1を参照してください。さまざまな形式を受け入れる場合は、必ずDateJSをご覧ください。
Date.parse
(これにより、ミリ秒数が返され、にフィードできますnew Date(ms)
)。ただし、これはブラウザごとに異なる可能性があることに注意してください。最近まで、実装は、彼らがやりたかったことのほぼすべてを行うことができましたDate.parse
。新しい第5版の仕様には、受け入れられる必要のある最小限の形式が含まれていますが、まだそれは当てになりません。
x = new Date(); x2 = new Date(x.getTime() + 1000)
はうまくいきました。1000はミリ秒の増分です。
Date
オブジェクトは変更可能です。同じ Date
オブジェクトを配列に3回格納しています。あなたは、3つの異なるしたい場合はDate
、オブジェクトを、次の3つのオブジェクトを作成する必要がありますvar unavailableDates = []; for (var d = new Date('2017-05-11'); d < new Date('2017-05-13'); d.setDate(d.getDate() + 1)) { unavailableDates.push(new Date(+d)); }
var myDate = new Date();
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
new Date("2009-09-11")
が、Firefoxは受け入れません。私はほとんどのブラウザが受け入れると思いますnew Date("2009/09/11")
ので、簡単な解決策はあるでしょうvar arrivalDate = document.getElementById('arival_date').value; var dayAfter = new Date(arrival_date.replace(/-/g, '/')); dayAfter.setDate(dayAfter.getDate()+1);
。
-
を/
し、ブラウザがそれを受け入れることを期待して、部品に文字列を分割するようになります:var dateParts = arrivalDate.split('-'); var y = parseInt(dateParts[0], 10); var m = parseInt(dateParts[1], 10); var d = parseInt(dateParts[2], 10); var dayAfter = new Date(y, m-1, d+1);
注我々が使用していることm-1
のjavascriptヶ月がenum値(1月は0であること、ではない1)であるため、ここでは、とd+1
私たちなぜなら'最初の割り当てで既にインクリメントを行っています(2月29日などは自動的に修正されます)
この回答の例は、夏時間調整日では機能しないようです。これらの日では、1日の時間数は24ではありません(「前に跳んでいる」か「後退している」かに応じて、23または25です)。
以下のAddDays JavaScript関数は、夏時間を考慮します。
function addDays(date, amount) {
var tzOff = date.getTimezoneOffset() * 60 * 1000,
t = date.getTime(),
d = new Date(),
tzOff2;
t += (1000 * 60 * 60 * 24) * amount;
d.setTime(t);
tzOff2 = d.getTimezoneOffset() * 60 * 1000;
if (tzOff != tzOff2) {
var diff = tzOff2 - tzOff;
t += diff;
d.setTime(t);
}
return d;
}
これは私が機能をテストするために使用したテストです:
var d = new Date(2010,10,7);
var d2 = AddDays(d, 1);
document.write(d.toString() + "<br />" + d2.toString());
d = new Date(2010,10,8);
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 27 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, 1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 28 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
最も簡単な方法は、ミリ秒に変換し、1000 * 60 * 60 * 24ミリ秒を追加することです。例:
var tomorrow = new Date(today.getTime()+1000*60*60*24);
1000*60*60*24
x を乗算するだけDaysToBeAdded
new Date(+new Date() + 1000*60*60*24)
ですが、実際にはgetTime()
/ に似ていsetTime()
ます。
new Date(Date.now()+1000*60*60*24);
他の人の提案に従う前に、まず文字列を解析する必要があります:
var dateString = "2010-09-11";
var myDate = new Date(dateString);
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
もう一度同じ形式に戻したい場合は、「手動」で行う必要があります。
var y = myDate.getFullYear(),
m = myDate.getMonth() + 1, // january is month 0 in javascript
d = myDate.getDate();
var pad = function(val) { var str = val.toString(); return (str.length < 2) ? "0" + str : str};
dateString = [y, pad(m), pad(d)].join("-");
しかし、私は他の回答で述べたようにあなたを助けること、Date.jsを取得示唆たくさん。
次の5日間の取得:
var date = new Date(),
d = date.getDate(),
m = date.getMonth(),
y = date.getFullYear();
for(i=0; i < 5; i++){
var curdate = new Date(y, m, d+i)
console.log(curdate)
}
dateObj.toJSON()メソッドを使用して日付の文字列値を取得しますRef:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON 返された日付をスライスします値を入力し、必要な日数だけ増分します。
var currentdate = new Date();
currentdate.setDate(currentdate.getDate() + 1);
var tomorrow = currentdate.toJSON().slice(0,10);
Date.prototype.AddDays = function (days) {
days = parseInt(days, 10);
return new Date(this.valueOf() + 1000 * 60 * 60 * 24 * days);
}
例
var dt = new Date();
console.log(dt.AddDays(-30));
console.log(dt.AddDays(-10));
console.log(dt.AddDays(-1));
console.log(dt.AddDays(0));
console.log(dt.AddDays(1));
console.log(dt.AddDays(10));
console.log(dt.AddDays(30));
結果
2017-09-03T15:01:37.213Z
2017-09-23T15:01:37.213Z
2017-10-02T15:01:37.213Z
2017-10-03T15:01:37.213Z
2017-10-04T15:01:37.213Z
2017-10-13T15:01:37.213Z
2017-11-02T15:01:37.213Z
BUG(テスト済みのFirefox 32.0.3およびChrome 38.0.2125.101)かどうかは完全にはわかりませんが、次のコードはブラジル(-3 GMT)では失敗します。
Date.prototype.shiftDays = function(days){
days = parseInt(days, 10);
this.setDate(this.getDate() + days);
return this;
}
$date = new Date(2014, 9, 16,0,1,1);
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
結果:
Fri Oct 17 2014 00:01:01 GMT-0300
Sat Oct 18 2014 00:01:01 GMT-0300
Sat Oct 18 2014 23:01:01 GMT-0300
Sun Oct 19 2014 23:01:01 GMT-0200
日付に1時間を追加すると、完全に機能します(ただし、問題は解決しません)。
$date = new Date(2014, 9, 16,0,1,1);
結果:
Fri Oct 17 2014 01:01:01 GMT-0300
Sat Oct 18 2014 01:01:01 GMT-0300
Sun Oct 19 2014 01:01:01 GMT-0200
Mon Oct 20 2014 01:01:01 GMT-0200
明日の日付の文字列表現になります。new Date()を使用して今日の日付を取得し、Date.getDate()とDate.setDate()を使用して1日を追加し、Dateオブジェクトを文字列に変換します。
const tomorrow = () => {
let t = new Date();
t.setDate(t.getDate() + 1);
return `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, '0')}-${String(
t.getDate()
).padStart(2, '0')}`;
};
tomorrow();
JavaScript日付のタイムゾーン/夏時間対応の日付増分:
function nextDay(date) {
const sign = v => (v < 0 ? -1 : +1);
const result = new Date(date.getTime());
result.setDate(result.getDate() + 1);
const offset = result.getTimezoneOffset();
return new Date(result.getTime() + sign(offset) * offset * 60 * 1000);
}