Sungguh mengherankan saya bahwa objek Date JavaScript tidak mengimplementasikan fungsi tambahan apa pun.
Saya hanya ingin fungsi yang dapat melakukan ini:
var now = Date.now();
var fourHoursLater = now.addHours(4);
function Date.prototype.addHours(h) {
// how do I implement this?
}
Saya hanya ingin beberapa petunjuk ke suatu arah.
Apakah saya perlu melakukan penguraian string?
Bisakah saya menggunakan setTime?
Bagaimana dengan milidetik?
Seperti ini:
new Date(milliseconds + 4*3600*1000 /*4 hrs in ms*/)?
Ini tampaknya sangat retas - dan apakah itu bekerja?
javascript
datetime
Jeff Meatball Yang
sumber
sumber
Uji:
sumber
var date = new Date(2012, 10, 22, 23, 0, 1); date.toString(); // Thu Nov 22 2012 23:00:01 GMT+0100 (CET) date.setHours(date.getHours() + 1); date.toString(); // Fri Nov 23 2012 00:00:01 GMT+0100 (CET)
Ini juga berfungsi dengan baik dengan setMinutes ()Kode di bawah ini untuk menambahkan 4 jam ke tanggal (contoh tanggal hari ini)
Itu tidak akan menyebabkan kesalahan jika Anda mencoba menambahkan 4 hingga 23 (lihat dokumen ):
sumber
setTime
atausetUTCHour
.Mungkin lebih baik untuk membuat metode addHours tidak berubah dengan mengembalikan salinan objek Date daripada memutasikan parameternya.
Dengan cara ini Anda dapat membuat banyak panggilan metode tanpa khawatir tentang keadaan.
sumber
add*
tersebut biasanya digunakan untuk mengubah objek itu sendiri.add
digunakan dalam kelas .NET frameworkDateTime
, dan memiliki arti yang sama dengan+
(plus) dalam Matematika.currentDate.addHours(1)
<- Dari insting pemrograman saya, saya mengharapkancurrentDate
nilai berubah, tetapi dalam implementasi Anda, itu tidak akan terjadi. Mengenai mengapa saya menyarankan untuk mengganti nama atau mengubah tanda tangannya menjadi sesuatuadd
Versi yang disarankan oleh kennebec akan gagal ketika mengubah ke atau dari DST, karena itu adalah angka jam yang ditetapkan.
akan menambah
h
jam untukthis
independen dari kekhasan sistem waktu. Metode Jason Harwig juga berfungsi.sumber
Anda dapat menggunakan perpustakaan momentjs http://momentjs.com/ .
sumber
Saya juga berpikir objek aslinya tidak boleh dimodifikasi. Jadi untuk menghemat tenaga kerja masa depan, inilah solusi gabungan berdasarkan jawaban Jason Harwig dan Tahir Hasan :
sumber
Ada tambahan di perpustakaan Datejs .
Dan inilah metode tanggal JavaScript . kennebec dengan bijak menyebutkan getHours () dan setHours ();
sumber
Periksa apakah belum ditentukan, atau tentukan di prototipe Date:
sumber
Cara lain untuk mengatasinya adalah dengan mengubah tanggal menjadi unixtime (zaman), kemudian menambahkan yang setara dalam (mili) detik, kemudian mengubahnya kembali. Dengan cara ini Anda dapat menangani transisi hari dan bulan, seperti menambahkan 4 jam menjadi 21, yang akan menghasilkan hari berikutnya, 01:00.
sumber
Untuk fungsi add / kurangi jam / menit sederhana dalam javascript, coba ini:
Ini dapat digunakan tanpa parameter untuk mendapatkan waktu saat ini
atau dengan parameter untuk mendapatkan waktu dengan menit / jam tambahan
bahkan waktu negatif bekerja
fungsi ini mengembalikan array
sumber
SPRBRN benar. Untuk memperhitungkan awal / akhir bulan dan tahun, Anda harus mengonversi ke Zaman dan kembali.
Begini cara Anda melakukannya:
atau melakukannya dalam satu baris (di mana nama variabel sama seperti di atas:
sumber
Ini adalah cara mudah untuk mendapatkan nilai data yang bertambah atau berkurang.
sumber
Sedikit berantakan, tapi berhasil!
Diberi format tanggal seperti ini: 2019-04-03T15: 58
Output Anda akan menjadi: 2019-04-03T16: 58
sumber