Dalam JavaScript, tanggal dapat diubah menjadi jumlah milidetik sejak epoc dengan memanggil getTime()
metode atau hanya menggunakan tanggal dalam ekspresi numerik.
Jadi untuk mendapatkan perbedaannya, kurangi saja kedua tanggal tersebut.
Untuk membuat tanggal baru berdasarkan perbedaannya, cukup teruskan jumlah milidetik di konstruktor.
var oldBegin = ...
var oldEnd = ...
var newBegin = ...
var newEnd = new Date(newBegin + oldEnd - oldBegin);
Ini seharusnya bekerja
EDIT : Memperbaiki bug yang ditunjukkan oleh @bdukes
EDIT :
Untuk penjelasan dari perilaku, oldBegin
, oldEnd
, dan newBegin
adalah Date
contoh. Memanggil operator +
dan -
akan memicu transmisi otomatis Javascript dan secara otomatis akan memanggil valueOf()
metode prototipe dari objek tersebut. Kebetulan valueOf()
metode tersebut diimplementasikan dalam Date
objek sebagai panggilan ke getTime()
.
Jadi pada dasarnya: date.getTime() === date.valueOf() === (0 + date) === (+date)
Date
objek? Sulit untuk mengatakan jenis objek apa mereka seharusnya, karena deklarasi variabel dihilangkan di sini.JavaScript dengan sempurna mendukung perbedaan tanggal di luar kotak
Sekarang beberapa jebakan. Coba ini:
Jadi, jika Anda berisiko menambahkan angka dan Tanggal, ubah Tanggal menjadi
number
secara langsung.Contoh tinju saya mendemonstrasikan kekuatan objek Date tetapi sebenarnya itu tampak seperti bom waktu
sumber
-
memaksa argumen menjadi angka, sehingga Tanggal mengembalikan nilai waktunya. The+
operator kelebihan beban, sehingga mungkin melakukan itu, pemaksaan untuk nomor atau Rangkaian. Karena Tanggal memaksa ke String dalam kasus ini,+
melakukan penggabungan. Kebingungan bukanlah kesalahan dari objek Date, tetapi karena operator yang kelebihan beban.Lihat JsFiddle DEMO
untuk Kode HTML Anda:
sumber
Jika Anda tidak peduli dengan komponen waktu, Anda dapat menggunakan
.getDate()
dan.setDate()
hanya mengatur bagian tanggal.Jadi untuk menetapkan tanggal akhir Anda menjadi 2 minggu setelah tanggal mulai Anda, lakukan sesuatu seperti ini:
Untuk mengembalikan perbedaan (dalam hari) antara dua tanggal, lakukan ini:
Akhirnya, mari kita ubah fungsi pertama sehingga bisa mengambil nilai yang dikembalikan oleh 2nd sebagai parameter:
sumber
GetDateDiff()
akan menembus batas bulan. Misalnya, 2011/04/26 dan 2011/05/01 akan menghasilkan -25, tetapi offsetnya harus 5 hari.Terima kasih @ Vincent Robert , saya akhirnya menggunakan contoh dasar Anda, meskipun sebenarnya
newBegin + oldEnd - oldBegin
. Inilah solusi akhir yang disederhanakan:sumber
getTime
dan terkadang tidakBergantung pada kebutuhan Anda, fungsi ini akan menghitung selisih antara 2 hari, dan mengembalikan hasil dalam desimal hari.
sumber
Math.abs()
panggilan, dan Anda akan selalu mendapatkan desimal positif.date.getTime()
untuk mendapatkan waktu di masa depan / masa lalu. `var nextMinute = Tanggal baru (someDate.getTime () + 60 * 1000);Jika menggunakan moment.js, ada solusi yang lebih sederhana, yang akan memberi Anda perbedaan hari dalam satu baris kode.
Detail tambahan dapat ditemukan di halaman moment.js
Selamat, Miguel
sumber
sumber
modifikasi alternatif kode diperpanjang ..
http://jsfiddle.net/vvGPQ/48/
sumber
sumber
sumber
kode ini mengisi durasi tahun studi ketika Anda memasukkan tanggal mulai dan tanggal akhir (memenuhi syarat tanggal yang dijamin) studi dan memeriksa apakah durasi kurang dari setahun jika ya peringatan pesan ingat ada tiga elemen masukan yang pertama
txtFromQualifDate
dan keduatxtQualifDate
dan ketigatxtStudyYears
itu akan menunjukkan hasil dari jumlah tahun dengan pecahan
sumber
getFullYear
yang dirancang untuk itu. ------- Lihat pustaka datejs di googlecode yang mungkin mendukung sebagian besar kasus pojokJika Anda menggunakan objek Tanggal dan kemudian menggunakan
getTime()
fungsi untuk kedua tanggal itu akan memberi Anda waktu masing-masing sejak Jan 1, 1970 dalam nilai angka. Anda kemudian bisa mendapatkan selisih antara angka-angka ini.Jika itu tidak membantu Anda, lihat dokumentasi lengkapnya: http://www.w3schools.com/jsref/jsref_obj_date.asp
sumber
Kode di bawah ini akan mengembalikan hari yang tersisa dari hari ini ke tanggal berjangka.
Dependensi: jQuery dan MomentJs.
sumber
sumber
INI ADALAH YANG SAYA LAKUKAN PADA SISTEM SAYA.
sumber