Bagaimana cara menghitung milidetik sejak awal hari?

Saya telah menentukan waktu tertentu pada hari tertentu. Sekarang saya ingin menghitung milidetik dari awal hari tertentu hingga waktu yang ditentukan pada hari itu? Saya berharap untuk melakukan itu dengan kode di bawah ini, tetapi malah tidak menunjukkan apa-apa? Apa yang saya lakukan salah?

var now = new Date().getTime();
var oneday = 1000 * 60 * 60 * 24;
var countDownDate = new Date("January 10, 2018 00:01").getTime();
var countDownStart = new Date(countDownDate.getFullYear(), countDownDate.getMonth(), countDownDate.getDate(), 0, 0, 0, 0); 
var countDownTime = countDownDate.getTime() - countDownStart.getTime();

var div = document.getElementById('result'); 
div.innerText = countDownTime;

Saya menentukan countDownDate. Lalu saya tandai awal countDownDate itu ke dalam variabel countDownStart. Selanjutnya saya menghitung waktu yang berlalu sejak 00:00 tanggal 10 Januari hingga 00:01 tanggal 10 Januari dengan mengurangi countDownStart dari countDownDate. Tapi tidak ada hasil yang ditampilkan...


person jiggy1965    schedule 06.01.2018    source sumber
comment
Anda dapat menggunakan perpustakaan momen. Ini akan berguna   -  person zabusa    schedule 06.01.2018
comment
@31piy terkadang momennya mudah dipahami saat melakukan banyak hal.   -  person zabusa    schedule 06.01.2018
comment
@31piy saat ini ada banyak bundler dan metode untuk mengurangi ukuran bundel jika dia perlu memuat perpustakaan dia juga malas memuat. jadi itu tergantung   -  person zabusa    schedule 06.01.2018
comment
@ 31piy ohk..tetapi juga ada banyak metode untuk mengatasi itu.misalnya.zip.lazy memuat dll.. Jadi keterbacaan harus dijaga.   -  person zabusa    schedule 06.01.2018
comment
Tolong jangan gunakan parser bawaan, lihat Mengapa Date .parse memberikan hasil yang salah?. Daripada new Date("January 10, 2018 00:01") gunakan new Date(2018, 0, 10, 0, 1) yang tidak hanya lebih kuat tetapi juga lebih sedikit mengetik. ;-) Selain itu, tidak semua hari memiliki durasi 24 jam di mana waktu musim panas diterapkan (ada yang lebih panjang, ada yang lebih pendek).   -  person RobG    schedule 07.01.2018


Jawaban (2)


Logika Anda baik-baik saja di sini. Satu-satunya masalah adalah baris ini di sini:

var countDownDate = new Date("January 10, 2018 00:01").getTime();

Karena Anda menggunakan .getTime(), variabel countDownDate bukan lagi sebuah tanggal. Dengan demikian, pernyataancountDownDate.getFullYear() berikut dan seterusnya tidak akan berfungsi. Cukup hapus .getTime() dan itu akan berfungsi seperti yang diharapkan:

var now = new Date().getTime();
var oneday = 1000 * 60 * 60 * 24;
var countDownDate = new Date("January 10, 2018 00:01");
var countDownStart = new Date(countDownDate.getFullYear(), countDownDate.getMonth(), countDownDate.getDate(), 0, 0, 0, 0); 
var countDownTime = countDownDate.getTime() - countDownStart.getTime();

console.log(countDownTime)

person Spencer Wieczorek    schedule 06.01.2018
comment
Tidak perlu getTime sama sekali, perbedaannya bisa saja countDownDate - countDownStart. ;-) - person RobG; 07.01.2018

Kode Anda hanya memiliki satu masalah, yaitu Anda telah menetapkan hasil .getTime() ke countDownDate, yang akan berupa angka.

Itu sebabnya JavaScript tidak dapat memanggil getFullYear, atau fungsi lainnya pada nomor itu, karena panggilan tersebut tidak valid.

Untuk memperbaikinya, hapus saja .getTime(), dan itu akan berfungsi dengan baik.

var now = new Date().getTime();
var oneday = 1000 * 60 * 60 * 24;
var countDownDate = new Date("January 10, 2018 00:01");
var countDownStart = new Date(countDownDate.getFullYear(), countDownDate.getMonth(), countDownDate.getDate(), 0, 0, 0, 0);
var countDownTime = countDownDate.getTime() - countDownStart.getTime();

var div = document.getElementById('result');
div.innerText = countDownTime;
<div id="result">
  <div>

person 31piy    schedule 06.01.2018
comment
Sepertinya Anda mengalahkan saya dalam beberapa detik :) - person Spencer Wieczorek; 06.01.2018