Menggunakan Perpustakaan
Jika Anda melakukan banyak pekerjaan kencan, Anda mungkin ingin melihat perpustakaan tanggal JavaScript seperti Datejs atau Moment.js . Misalnya, dengan Moment.js, ini hanyalah:
var newDateObj = moment(oldDateObj).add(30, 'm').toDate();
Vanilla Javascript
Ini seperti jawaban kekacauan , tetapi dalam satu baris:
var newDateObj = new Date(oldDateObj.getTime() + diff*60000);
Di mana diff
perbedaan dalam menit yang Anda inginkan dari oldDateObj
waktu. Bahkan bisa negatif.
Atau sebagai fungsi yang dapat digunakan kembali, jika Anda perlu melakukan ini di banyak tempat:
function addMinutes(date, minutes) {
return new Date(date.getTime() + minutes*60000);
}
Dan kalau-kalau ini tidak jelas, alasan kami melipatgandakan menit 60000
adalah untuk mengubah menit menjadi milidetik.
Hati-hati dengan Vanilla Javascript. Tanggal Itu Sulit!
Anda mungkin berpikir Anda dapat menambahkan 24 jam ke tanggal untuk mendapatkan tanggal besok, bukan? Salah!
addMinutes(myDate, 60*24); //DO NOT DO THIS
Ternyata, jika pengguna mengamati waktu musim panas, sehari belum tentu 24 jam. Ada satu hari setahun yang panjangnya hanya 23 jam, dan satu hari setahun yang panjangnya 25 jam. Misalnya, di sebagian besar Amerika Serikat dan Kanada, 24 jam setelah tengah malam, 2 November 2014, masih 2 November:
const NOV = 10; //because JS months are off by one...
addMinutes(new Date(2014, NOV, 2), 60*24); //In USA, prints 11pm on Nov 2, not 12am Nov 3!
Inilah sebabnya mengapa menggunakan salah satu perpustakaan yang disebutkan sebelumnya adalah taruhan yang lebih aman jika Anda harus melakukan banyak pekerjaan dengan ini.
Di bawah ini adalah versi yang lebih umum dari fungsi ini yang saya tulis. Saya masih merekomendasikan menggunakan perpustakaan, tetapi itu mungkin berlebihan / tidak mungkin untuk proyek Anda. Sintaks dimodelkan setelah fungsi MySQL DATE_ADD .
/**
* Adds time to a date. Modelled after MySQL DATE_ADD function.
* Example: dateAdd(new Date(), 'minute', 30) //returns 30 minutes from now.
* https://stackoverflow.com/a/1214753/18511
*
* @param date Date to start with
* @param interval One of: year, quarter, month, week, day, hour, minute, second
* @param units Number of units of the given interval to add.
*/
function dateAdd(date, interval, units) {
if(!(date instanceof Date))
return undefined;
var ret = new Date(date); //don't change original date
var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);};
switch(String(interval).toLowerCase()) {
case 'year' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break;
case 'quarter': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break;
case 'month' : ret.setMonth(ret.getMonth() + units); checkRollover(); break;
case 'week' : ret.setDate(ret.getDate() + 7*units); break;
case 'day' : ret.setDate(ret.getDate() + units); break;
case 'hour' : ret.setTime(ret.getTime() + units*3600000); break;
case 'minute' : ret.setTime(ret.getTime() + units*60000); break;
case 'second' : ret.setTime(ret.getTime() + units*1000); break;
default : ret = undefined; break;
}
return ret;
}
Demo jsFiddle bekerja .