Cara menambahkan hari ke saat ini Date
menggunakan JavaScript. Apakah JavaScript memiliki fungsi bawaan seperti .Net AddDay
?
javascript
date
datetime
time
Ashesh
sumber
sumber
Date.prototype.addDays=function(d){return new Date(this.valueOf()+864E5*d);};
864E5
untuk beberapa alasan saya lebih suka menulis24*60*60
dalam kode saya :)Jawaban yang benar :
Jawaban yang salah :
Jawaban ini terkadang memberikan hasil yang benar tetapi sangat sering mengembalikan tahun dan bulan yang salah. Satu-satunya waktu jawaban ini bekerja adalah ketika tanggal yang Anda tambahkan hari akan memiliki tahun dan bulan saat ini.
Bukti / Contoh
Lihat JsFiddle ini
Tampilkan cuplikan kode
sumber
Hati-hati, karena ini bisa rumit. Saat menetapkan "besok", itu hanya berfungsi karena nilainya saat ini cocok dengan tahun dan bulan untuk "hari ini". Namun, pengaturan ke nomor tanggal seperti "32" biasanya masih berfungsi dengan baik untuk memindahkannya ke bulan berikutnya.
sumber
var d = new Date(); d.setDate( d.getDate() + 1 );
?getDate()
kembalikan hari tahun itu . Kemudian, panggilansetDate
menentukan hari di tahun berjalan . Jadi ini BUKAN solusi umum yang baik. Jawaban @ AnthonyWJones sebenarnya bekerja dengan benar.var d = new Date(2015,11,30);d.setDate(d.getDate() + 370)
memberi 3 Jan 2017 yang melintasi 2 tahun.Solusi sederhana saya adalah:
solusi ini tidak memiliki masalah dengan waktu musim panas. Juga, seseorang dapat menambahkan / mengganti offset apa pun selama bertahun-tahun, bulan, hari, dll.
adalah kode yang benar.
sumber
setDate
.Jawaban ini sepertinya membingungkan bagi saya, saya lebih suka:
getTime () memberi kita milidetik sejak 1970, dan 86400000 adalah jumlah milidetik dalam sehari. Karenanya, ms berisi milidetik untuk tanggal yang diinginkan.
Menggunakan konstruktor milidetik memberikan objek tanggal yang diinginkan.
sumber
new Date(new Date('11/4/2012').getTime() + 86400000)
Mencoba
Menggunakan setDate () untuk menambahkan tanggal tidak akan menyelesaikan masalah Anda, coba tambahkan beberapa hari ke bulan Februari, jika Anda mencoba menambahkan hari baru ke dalamnya, itu tidak akan menghasilkan apa yang Anda harapkan.
sumber
setDate()
? Apakah ini: stackoverflow.com/questions/5497637/...Hanya menghabiskan waktu bertahun-tahun untuk mencari tahu apa yang terjadi dengan tahun yang tidak ditambahkan ketika mengikuti contoh utama di bawah ini.
Jika Anda hanya ingin menambahkan n hari ke tanggal yang Anda miliki, yang terbaik adalah:
atau versi jangka panjang
Ini hari ini / besok membingungkan. Dengan mengatur tanggal saat ini ke variabel tanggal baru Anda, Anda akan mengacaukan nilai tahun. jika Anda bekerja dari tanggal semula, Anda tidak akan melakukannya.
sumber
Jika Anda bisa, gunakan moment.js . JavaScript tidak memiliki metode tanggal / waktu asli yang sangat bagus. Berikut ini adalah contoh sintaks Moment:
Referensi: http://momentjs.com/docs/#/manipulating/add/
sumber
CodePen
sumber
Saya membuat ekstensi ini tadi malam:
Anda dapat memberikan nilai positif atau negatif;
contoh:
sumber
Tanpa menggunakan variabel kedua, Anda dapat mengganti 7 dengan x hari berikutnya:
sumber
untuk mengurangi 30 hari gunakan (24 jam = 86400000 ms)
Tampilkan cuplikan kode
sumber
Solusi paling sederhana.
sumber
Terima kasih Jason atas jawaban Anda yang berfungsi seperti yang diharapkan, berikut adalah campuran dari kode Anda dan format praktis dari AnthonyWJones:
sumber
Terlambat ke pesta,
tetapi jika Anda menggunakannyaada plugin yang sangat bagus bernama Moment:jQuery
makahttp://momentjs.com/
http://momentjs.com/docs/#/manipulating/
Dan banyak hal baik lainnya di sana!
Sunting: referensi jQuery dihapus berkat komentar aikeru
sumber
Solusi yang dirancang untuk operator pipa :
Pemakaian:
Jika Anda membutuhkan lebih banyak fungsi, saya sarankan melihat ke perpustakaan tanggal-fns .
sumber
Lama saya tahu, tetapi kadang-kadang saya suka ini:
sumber
Date.prototype.addDays = function(days) {return new Date(this.getTime() + (864e5 * days));};
Saya memiliki masalah dengan penghematan waktu siang hari dengan solusi yang diusulkan.
Dengan menggunakan
getUTCDate
/setUTCDate
sebaliknya, saya memecahkan masalah saya.sumber
Anda dapat menggunakan JavaScript, tidak perlu jQuery:
sumber
Prototipe generik tanpa variabel, ini berlaku pada nilai Tanggal yang ada:
sumber
Dokumen mozilla untuk setDate () tidak menunjukkan bahwa ia akan menangani skenario akhir bulan. Lihat https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date
Atur tanggal()
Itu sebabnya saya menggunakan setTime () ketika saya perlu menambahkan hari.
sumber
Sesederhana ini:
sumber
Saya kira saya akan memberikan jawaban juga:
Secara pribadi, saya suka mencoba menghindari deklarasi variabel serampangan, panggilan metode, dan panggilan konstruktor, karena semuanya mahal pada kinerja. (tentu saja, dengan alasan)
saya akan meninggalkan ini hanya sebagai komentar di bawah Jawaban yang diberikan oleh @AnthonyWJones tetapi berpikir lebih baik dari itu.
Di atas akan menghormati DST. Berarti jika Anda menambahkan beberapa hari yang melewati DST, waktu (jam) yang ditampilkan akan berubah untuk mencerminkannya.
Contoh:
2 Nov 2014 02:00 adalah akhir dari DST.
Jika Anda ingin mempertahankan waktu melintasi DST (jadi 10:30 masih akan menjadi 10:30) ...
Jadi, sekarang kamu sudah ...
sumber
Tidak, javascript tidak memiliki fungsi bawaan, tetapi Anda dapat menggunakan baris kode sederhana
sumber
Saya menggunakan sesuatu seperti:
Bekerja dengan menghemat waktu:
Bekerja dengan tahun baru:
Itu dapat parametrized:
sumber
Saya menggunakan solusi berikut.
Date memiliki konstruktor yang menerima int. Argumen ini mewakili total milidetik sebelum / setelah 1 Januari 1970. Argumen ini juga memiliki metode setTime yang melakukan hal yang sama tanpa membuat objek Date yang baru.
Apa yang kami lakukan di sini adalah mengonversi hari menjadi milidetik dan menambahkan nilai ini ke nilai yang diberikan oleh getTime. Akhirnya, kami memberikan hasilnya kepada konstruktor Date (milidetik) atau metode setTime (milidetik).
sumber
now.setDate(now.getDate() + days);
secara otomatis menangani perubahan DST. Dan saya harus memperbaiki, lompatan detik diabaikan dalam cap waktu JS.Sunting: Alih-alih
setTime()
(atausetHours()
) Anda bisa melakukannya dengan cara ini:Tua:
Alih-alih menggunakan
setTime()
Anda dapat menggunakansetHours()
:Lihat JSFiddle ...
sumber
d.setDate(d.getDate() + 1);
Kode yang sangat sederhana untuk menambahkan tanggal dalam skrip java.
sumber
Ada metode setDate dan getDate , yang memungkinkan Anda melakukan sesuatu seperti ini:
Jika Anda ingin mengurangi beberapa hari dan memformat tanggal Anda dalam format yang dapat dibaca manusia, Anda harus mempertimbangkan untuk membuat
DateHelper
objek kustom yang terlihat seperti ini:(Lihat juga Fiddle ini )
sumber
Memperluas prototipe dalam javascript mungkin bukan ide yang baik , terutama dalam basis kode profesional.
Apa yang ingin Anda lakukan adalah memperluas
Date
kelas asli :Dengan cara ini, jika suatu hari Javascript mengimplementasikan
addDays
metode asli , Anda tidak akan merusak apa pun.sumber