Jawaban:
var date = new Date();
date ; //# => Fri Apr 01 2011 11:14:50 GMT+0200 (CEST)
date.setDate(date.getDate() - 1);
date ; //# => Thu Mar 31 2011 11:14:50 GMT+0200 (CEST)
Tidak terlalu efisien, tetapi sebagai oneliner:
var yesterday = new Date(new Date().setDate(new Date().getDate()-1));
Di atas menciptakan tiga Dateobjek yang sia-sia sia-sia. Ini dapat direduksi menjadi satu instantiasi dengan:
var yesterday = (function(){this.setDate(this.getDate()-1); return this})
.call(new Date)
Atau, jika Anda lebih suka:
var yesterday = (function(d){ d.setDate(d.getDate()-1); return d})(new Date)
Atau, jika Anda lebih suka ES6 dengan fungsi panah:
let yesterday = ( d => new Date(d.setDate(d.getDate()-1)) )(new Date);
var yesterday = (function(d){ d.setDate(d.getDate()-1); return d})(new Date)
Coba ini
var d = new Date();
d.setDate(d.getDate() - 1);
Anehnya tidak ada jawaban untuk solusi lintas peramban yang paling mudah
Untuk menemukan waktu yang persis sama kemarin:
var yesterday = new Date(Date.now() - 86400000); // that is: 24 * 60 * 60 * 1000
Itu jika Anda ingin bebas dari ketergantungan, jika tidak saya sarankan menggunakan http://momentjs.com
Untuk menggeneralisasi pertanyaan dan membuat perhitungan lain, gunakan:
var yesterday = new Date((new Date()).valueOf() - 1000*60*60*24);
ini menciptakan objek tanggal baru berdasarkan nilai "sekarang" sebagai bilangan bulat yang mewakili zaman unix dalam milidetik yang mengurangi satu hari.
Dua hari yang lalu:
var twoDaysAgo = new Date((new Date()).valueOf() - 1000*60*60*24*2);
Satu jam yang lalu:
var oneHourAgo = new Date((new Date()).valueOf() - 1000*60*60);
new Date(Date.parse(new Date()) - 86400000). Meskipun saya suka Date.now () jadi mungkin saya akan mencobanya. Ini akan menyimpan tanggal tambahan.
Saya menggunakan perpustakaan saat ini , sangat fleksibel dan mudah digunakan.
Dalam kasus Anda:
let yesterday = moment().subtract(1, 'day').toDate();
subtractdaripadaadd
new Date(new Date().setDate(new Date().getDate()-1))
//Create a date object using the current time
var now = new Date();
//Subtract one day from it
now.setDate(now.getDate()-1);
var today = new Date();
var yesterday1 = new Date(new Date().setDate(new Date().getDate() - 1));
var yesterday2 = new Date(Date.now() - 86400000);
var yesterday3 = new Date(Date.now() - 1000*60*60*24);
var yesterday4 = new Date((new Date()).valueOf() - 1000*60*60*24);
console.log("Today: "+today);
console.log("Yesterday: "+yesterday1);
console.log("Yesterday: "+yesterday2);
console.log("Yesterday: "+yesterday3);
console.log("Yesterday: "+yesterday4);
Ini akan menghasilkan kemarin pukul 00:00 dengan presisi menit
var d = new Date();
d.setDate(d.getDate() - 1);
d.setTime(d.getTime()-d.getHours()*3600*1000-d.getMinutes()*60*1000);
d.setHours(0,0,0,0);
akan melakukan trik
d.setHours(-1,0,0,0). Ini akan mengembalikan tanggal kemarin, tetapi mungkin bukan waktu yang Anda inginkan (23:00:00)
Cobalah ini, bekerja untuk saya:
var today = new Date();
var yesterday = new Date(today.setDate(today.getDate() - 1)); `
Ini membuat saya objek kencan kembali untuk kemarin
var yesterday = new Date(); yesterday.setDate(today.GetDate() - 1)sehingga Anda dapat menggunakan hari ini dan kemarin
Berikut ini adalah satu liner yang digunakan untuk mendapatkan tanggal kemarin dalam format YYYY-MM-DD dalam teks dan menangani offset zona waktu.
new Date(Date.now() - 1 * 86400000 - new Date().getTimezoneOffset() * 60000).toISOString().split('T')[0]
Jelas dapat berubah menjadi tanggal kembali, x hari mundur. Termasuk waktu dll.
console.log(Date())
console.log(new Date(Date.now() - 1 * 86400000 - new Date().getTimezoneOffset() * 60000).toISOString().split('T')[0]); // "2019-11-11"
console.log(new Date(Date.now() - 1 * 86400000 - new Date().getTimezoneOffset() * 60000).toISOString().split('.')[0].replace('T',' ')); // "2019-11-11 11:11:11"
// that is: [dates] * 24 * 60 * 60 * 1000 - offsetinmin * 60 * 1000 // this is: [dates] * 24 * 60 * 60 * 1000 - offsetinmin * 60 * 1000
Jika Anda ingin mendapatkan tanggal untuk kemarin dan memformat tanggal itu dalam format yang dapat dibaca manusia, pertimbangkan untuk membuat DateHelperobjek khusus yang terlihat seperti ini:
var DateHelper = {
addDays : function(aDate, numberOfDays) {
aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
return aDate; // Return the date
},
format : function format(date) {
return [
("0" + date.getDate()).slice(-2), // Get day and pad it with zeroes
("0" + (date.getMonth()+1)).slice(-2), // Get month and pad it with zeroes
date.getFullYear() // Get full year
].join('/'); // Glue the pieces together
}
}
// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Subtract 1 day
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), -1));
(Lihat juga Fiddle ini )
Anda dapat menggunakan momentjs. Sangat membantu Anda dapat mencapai banyak hal dengan perpustakaan ini.
Dapatkan tanggal kemarin dengan waktu saat ini
moment().subtract(1, 'days').toString()
Dapatkan tanggal kemarin dengan tanggal mulai
moment().subtract(1, 'days').startOf('day').toString()
"Date.now () - 86400000" tidak akan berfungsi pada akhir hari Daylight Saving (yang memiliki 25 jam hari itu)
Pilihan lain adalah menggunakan Penutupan:
var d = new goog.date.Date();
d.add(new goog.date.Interval(0, 0, -1));
getDatemengembalikan hari dalam sebulan (misalnya: 1 - 31) tetapi sebenarnyasetDate(0)menetapkan tanggal ke hari terakhir bulan sebelumnya. Apakah ini berfungsi di semua browser?