Lebih
Tambahkan hari untuk Upload JavaScript
Bagaimana untuk menambah hari untuk saat ini Date
dengan menggunakan JavaScript. Apakah JavaScript memiliki built in fungsi seperti .Net's AddDay
?
974
42
Anda dapat membuat satu dengan:-
Ini membutuhkan perawatan secara otomatis incrementing bulan jika diperlukan. Misalnya:
8/31 + 1 hari akan menjadi 9/1.
Masalah dengan menggunakan
setDate
langsung adalah bahwa hal itu's mutator dan hal-hal semacam itu sebaiknya dihindari. ECMA melihat cocok untuk mengobatiTanggal
sebagai mutable kelas daripada berubah struktur.Jawaban Yang Benar:
Jawaban Yang Salah:
Ini jawaban kadang-kadang memberikan hasil yang benar tapi sangat sering kembali salah tahun dan bulan. Satu-satunya waktu jawaban ini bekerja adalah bila tanggal yang anda menambahkan hari untuk terjadi untuk tahun berjalan dan bulan.
Bukti / Contoh
[Periksa ini JsFiddle][1]
Hati-hati, karena hal ini bisa rumit. Ketika menetapkan "besok", hanya bekerja karena itu's nilai saat ini sesuai dengan tahun dan bulan untuk "hari ini". Namun, pengaturan untuk tanggal jumlah seperti "32" biasanya masih akan bekerja dengan baik untuk memindahkannya ke bulan berikutnya.
Saya solusi sederhana adalah:
solusi ini tidak memiliki masalah dengan daylight saving time. Juga, seseorang dapat menambahkan/sub diimbangi selama bertahun-tahun, bulan, hari, dll.
adalah kode yang benar.
Jawaban ini tampak membingungkan untuk saya, saya lebih suka:
getTime() memberi kita milidetik sejak tahun 1970, dan 86400000 adalah jumlah milidetik dalam satu hari. Oleh karena itu, ms berisi milidetik untuk tanggal yang diinginkan.
Menggunakan milidetik konstruktor memberikan tanggal yang diinginkan objek.
Mencoba
Menggunakan setDate() untuk menambahkan sebuah upload tidak memecahkan masalah anda, coba tambahkan beberapa hari sampai satu bulan Feb, jika anda mencoba untuk menambahkan baru hari ini, itu tidak akan mengakibatkan apa yang anda harapkan.
Hanya menghabiskan usia untuk mencoba mencari tahu apa kesepakatan itu dengan tidak menambahkan ketika memimpin berikut contoh-contoh di bawah ini.
Jika anda ingin hanya cukup menambahkan n hari ke tanggal yang telah anda anda adalah yang terbaik untuk hanya pergi:
atau longwinded versi
Hari ini/besok hal-hal yang membingungkan. Dengan menetapkan tanggal ke tanggal yang baru variabel anda akan mengacaukan nilai tahun. jika anda bekerja dari aslinya tanggal yang anda tidak't.
Jika anda bisa, gunakan moment.js. JavaScript doesn't memiliki sangat baik asli tanggal/waktu metode. Berikut ini adalah contoh Saat's sintaks:
Referensi: http://momentjs.com/docs/#/manipulating/add/
CodePen
Saya membuat ekstensi ini malam terakhir: anda dapat lulus baik positif atau nilai negatif;
contoh:
Solusi yang paling sederhana.
Tanpa menggunakan variabel kedua, anda bisa ganti 7 dengan anda berikutnya x hari:
Terima kasih Jason untuk jawaban anda yang bekerja seperti yang diharapkan, di sini adalah campuran dari kode anda dan berguna format AnthonyWJones :
Lama aku tahu, tapi kadang-kadang saya seperti ini:
Terlambat ke pesta, <menyerang>tetapi jika anda menggunakan
jQuery
maka</strike> ada's sebuah plugin yang disebut Saat ini:http://momentjs.com/
http://momentjs.com/docs/#/manipulating/
Dan banyak lain hal-hal yang baik di sana!
Edit: jQuery referensi dihapus terima kasih untuk aikeru's komentar
Anda dapat menggunakan JavaScript, jQuery tidak ada yang diperlukan:
Saya menggunakan sesuatu seperti:
Bekerja dengan hari hemat waktu:
Bekerja dengan tahun baru:
Hal ini dapat parametrized:
Mozilla docs untuk setDate() don't menunjukkan bahwa itu akan menangani akhir bulan skenario. Lihat https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date
setDate()
Itu sebabnya saya menggunakan setTime() ketika saya perlu untuk menambahkan hari.
Tidak, javascript tidak memiliki built in fungsi, tapi anda dapat menggunakan baris kode sederhana
Saya kira saya'll memberikan jawaban seperti ini:
Secara pribadi, saya ingin mencoba untuk menghindari serampangan deklarasi variabel, metode, dan panggilan konstruktor panggilan, karena mereka semua mahal pada kinerja. (dalam alasan, tentu saja)
Aku akan meninggalkan ini hanya sebagai komentar di bawah Jawaban yang diberikan oleh @AnthonyWJones tapi berpikir lebih baik dari itu.
Di atas akan menghormati DST. Artinya jika anda menambahkan jumlah hari yang melintasi DST, yang ditampilkan waktu (jam) akan berubah untuk mencerminkan hal itu.
Contoh:
Nov 2, 2014 02:00 akhir DST.
Jika anda'kembali mencari untuk mempertahankan waktu di seluruh DST (sehingga 10:30 masih akan 10:30)...
Jadi, sekarang anda memiliki...