var range = getDates(new Date(), new Date().addDays(7));
Saya ingin "rentang" menjadi array objek tanggal, satu untuk setiap hari antara dua tanggal.
Kuncinya adalah bahwa ia harus menangani batas bulan dan tahun juga.
javascript
node.js
date
datetime
date-range
Scott Klarenbach
sumber
sumber
startDate
danendDate
? Karena jikastartDate
waktu lebih lama daristopDate
waktu, itu tidak akan termasukstopDate
dalam hasilnya, kan?Coba ini, ingatlah untuk memasukkan momen js,
sumber
var dateArray = [];
Detail di sinivar currentDate = moment(startDate);
Jika Anda menggunakan metode ini dua kali pada saat yang sama. Tanggal Anda akan bingung mengapa itu hanya bekerja pertama kali. Ini terjadi karena javascripts meneruskan objek dengan referensi sehingga fungsi berakhir menggunakan startDate dua kali (yang sudah dimutasi). Menambal perbaikan di atas memastikan bahwa Anda sedang mengelus dengan objek js momen baru dan unik dalam lingkup fungsi. Lihat biolaSaya melihat semua yang di atas. Akhirnya menulis sendiri. Anda tidak perlu momen untuk ini . Asli untuk loop sudah cukup dan paling masuk akal karena untuk loop ada untuk menghitung nilai dalam rentang.
Satu Liner:
Versi Panjang
Daftar tanggal di antara:
Hari dari tanggal yang lalu hingga sekarang:
sumber
getDaysArray
? Bukan hari-hari di antara itu.for (var arr=[], dt=new Date(start), ...)
. ;-)Saya menggunakan moment.js dan Twix.js mereka memberikan dukungan yang sangat bagus untuk pembuatan tanggal dan waktu
Saya menjalankan ini di http://jsfiddle.net/Lkzg1bxb/
sumber
sumber
sumber
Jika Anda menggunakan momen maka Anda dapat menggunakan "plugin resmi" mereka untuk rentang
moment-range
dan kemudian ini menjadi sepele.contoh simpul rentang-momen:
contoh browser rentang-momen:
contoh tanggal fns:
Jika Anda menggunakan
date-fns
maka itueachDay
adalah teman Anda dan Anda mendapatkan jawaban tersingkat dan paling singkat:sumber
Baru saja menemukan pertanyaan ini, cara termudah untuk melakukannya adalah menggunakan momen:
Anda harus menginstal momen dan rentang-waktu terlebih dahulu:
sumber
Saya telah menggunakan solusi @Mohammed Safeer untuk sementara waktu dan saya membuat beberapa perbaikan. Menggunakan tanggal yang diformat adalah praktik yang buruk saat bekerja di pengontrol Anda.
moment().format()
harus digunakan hanya untuk tujuan tampilan dalam tampilan. Ingat juga itumoment().clone()
memastikan pemisahan dari parameter input, yang berarti bahwa tanggal input tidak diubah. Saya sangat menyarankan Anda untuk menggunakan moment.js saat bekerja dengan kencan.Pemakaian:
startDate
,endDate
parameterinterval
parameter bersifat opsional dan standarnya adalah 'hari'. Gunakan interval yang didukung oleh.add()
metode (moment.js). Lebih detail di sinitotal
parameter berguna ketika menentukan interval dalam menit. Standarnya adalah 1.Memohon:
Fungsi:
sumber
Menggunakan ES6 Anda memiliki Array. Dari artinya Anda dapat menulis fungsi yang sangat elegan, yang memungkinkan untuk Interval dinamis (jam, hari, bulan).
sumber
new Date(2017,12,30)
adalah 30 Januari 2018, bagi saya rentang tanggal dimulai pada 29 Januari 2018. Tidak semua hari panjangnya 8.64e7 ms (24 jam) di mana penghematan cahaya matahari diamati. ;-)Saya baru-baru ini bekerja dengan moment.js, mengikuti melakukan trik ..
Hasilnya adalah:
sumber
sumber
var
sebelumnyastrDate
di dalam loop sementara!d3js menyediakan banyak fungsi praktis dan termasuk d3.time untuk manipulasi tanggal yang mudah
https://github.com/d3/d3-time
Untuk permintaan spesifik Anda:
UTC
atau waktu setempat
range akan berupa array objek tanggal yang jatuh pada nilai pertama yang mungkin untuk setiap hari
Anda dapat mengubah timeDay ke timeHour, timeMonth dll untuk hasil yang sama pada interval yang berbeda
sumber
Berikut adalah satu liner yang tidak memerlukan pustaka jika Anda tidak ingin membuat fungsi lain. Cukup ganti startDate (di dua tempat) dan endDate (yang merupakan objek tanggal js) dengan variabel atau nilai tanggal Anda. Tentu saja Anda bisa membungkusnya dalam suatu fungsi jika Anda mau
sumber
Saya menggunakan fungsi ini
sumber
Saya menggunakan loop sementara sederhana untuk menghitung antara tanggal
sumber
catatan: Saya sadar ini sedikit berbeda dari solusi yang diminta, tetapi saya rasa banyak yang akan merasakan manfaatnya.
Jika Anda ingin menemukan setiap interval "x" (hari, bulan, tahun, dll ...) antara dua tanggal, moment.js dan rentang momen paket ekstensi memungkinkan fungsi ini.
Misalnya, untuk menemukan setiap hari ke 30 antara dua tanggal :
sumber
Hasilkan array tahun:
Buat array untuk bulan:
Buat array selama berhari-hari:
sumber
Anda dapat melakukannya dengan mudah menggunakan momentJS
Tambahkan momen ke dependensi Anda
Kemudian impor itu di file Anda
Kemudian gunakan kode berikut untuk mendapatkan daftar semua tanggal antara dua tanggal
sumber
Ini dapat membantu seseorang,
https://gist.github.com/pranid/3c78f36253cbbc6a41a859c5d718f362.js
sumber
Berikut adalah metode kalengan yang akan menerima tanggal atau string Moment atau campuran sebagai input dan menghasilkan array tanggal sebagai tanggal Moment. Jika Anda tidak ingin tanggal Momen sebagai output maka ubah
map()
metode apa yang dikembalikan.sumber
@ solusi softvar, tetapi kemudian termasuk opsi tanggal kerja
sumber
Fungsi:
Pemakaian:
Semoga ini bisa membantu Anda
sumber