Cara menggunakan DAYTE di JavaScript

Niguru. com. Sabtu, 12 Sep 2020. Pada postingan sebelumnya sudah dijelaskan bahwa dalam pembuatan aplikasi dimana user harus menginput data berupa tanggal atau waktu, biasanya di dalam program terdapat fungsi perhitungan yang menggunakan tanggal atau waktu.  

Show


    Postingan ini melanjutkan postingan sebelumnya yang sudah menjelaskan tentang operasional terkait tanggal. Jadi kali ini Niguru. com akan dilanjutkan dengan penjelasan terkait waktu


    Untuk mendapatkan atau menuliskan nilai waktu, gunakan fungsi new Date() yang sudah dijelaskan pada postingan hari sebelumnya


    Sedangkan untuk mendapatkan nilai waktu dari new Date() menggunakan atribut extended berikut

    Mari berkenalan dengan objek bawaan yang baru. Tanggal. yang akan menyimpan tanggal, waktu dan menyediakan metode untuk manajemen tanggal/waktu

    Misalnya, kita dapat menggunakannya untuk menghemat waktu pembuatan/modifikasi, untuk menghitung waktu atau hanya untuk melihat tanggal saat ini

    Untuk membuat objek

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 baru, panggil
    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    4 dengan salah satu argumen di bawah ini

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    _4

    Tanpa argumen – membuat objek

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    _3 untuk tanggal dan waktu saat ini

    let now = new Date();
    alert( now ); // tampilkan tanggal/waktu sekarang
    _

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    _7

    Membuat objek

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 dengan waktu sama dengan milidetik (1/1000 detik) melewati 1 Januari 1970 UTC+0

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );

    Bilangan bulat yang mewakili jumlah milidetik yang telah berlalu sejak awal tahun 1970 disebut stempel waktu

    Ini adalah angka numerik ringan yang mewakili tanggal. Kami akan selalu dapat membuat tanggal dari stempel waktu menggunakan

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    9 dan mengubah objek
    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 yang ada menjadi stempel waktu dengan menggunakan metode
    let date = new Date("2017-01-26");
    alert(date);
    // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
    // disesuaikan menurut zona waktu dimana kodenya berjalan
    // Jadi hasilnya mungkin bisa
    // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
    // atau
    // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
    1 (lihat di bawah)

    Tanggal sebelum 01. 01. 1970 memiliki stempel waktu negatif, misalnya

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );

    let date = new Date("2017-01-26");
    alert(date);
    // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
    // disesuaikan menurut zona waktu dimana kodenya berjalan
    // Jadi hasilnya mungkin bisa
    // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
    // atau
    // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
    _2

    Jika ada satu argumen, dan itu adalah sebuah string, maka itu akan diuraikan secara otomatis. Algoritmenya sama dengan yang digunakan

    let date = new Date("2017-01-26");
    alert(date);
    // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
    // disesuaikan menurut zona waktu dimana kodenya berjalan
    // Jadi hasilnya mungkin bisa
    // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
    // atau
    // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
    3, kita akan mempelajarinya nanti

    let date = new Date("2017-01-26");
    alert(date);
    // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
    // disesuaikan menurut zona waktu dimana kodenya berjalan
    // Jadi hasilnya mungkin bisa
    // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
    // atau
    // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)

    let date = new Date("2017-01-26");
    alert(date);
    // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
    // disesuaikan menurut zona waktu dimana kodenya berjalan
    // Jadi hasilnya mungkin bisa
    // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
    // atau
    // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
    _4

    Buat waktu dengan komponen yang diberikan dari zona waktu lokal. Hanya dua argumen pertama yang wajib

    • let date = new Date("2017-01-26");
      alert(date);
      // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
      // disesuaikan menurut zona waktu dimana kodenya berjalan
      // Jadi hasilnya mungkin bisa
      // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
      // atau
      // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
      _5 harus memiliki 4 digit.
      let date = new Date("2017-01-26");
      alert(date);
      // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
      // disesuaikan menurut zona waktu dimana kodenya berjalan
      // Jadi hasilnya mungkin bisa
      // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
      // atau
      // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
      _6 bisa,
      let date = new Date("2017-01-26");
      alert(date);
      // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
      // disesuaikan menurut zona waktu dimana kodenya berjalan
      // Jadi hasilnya mungkin bisa
      // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
      // atau
      // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
      7 tidak bisa
    • Perhitungan
      let date = new Date("2017-01-26");
      alert(date);
      // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
      // disesuaikan menurut zona waktu dimana kodenya berjalan
      // Jadi hasilnya mungkin bisa
      // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
      // atau
      // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
      _8 dimulai dari
      let date = new Date("2017-01-26");
      alert(date);
      // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
      // disesuaikan menurut zona waktu dimana kodenya berjalan
      // Jadi hasilnya mungkin bisa
      // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
      // atau
      // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
      9 (Jan), hingga
      new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
      new Date(2011, 0, 1); // sama, jam dan yang lainnya secara default adalah 0
      0 (Des)
    • Parameter
      new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
      new Date(2011, 0, 1); // sama, jam dan yang lainnya secara default adalah 0
      1 sebenarnya adalah hari dalam sebulan, jika tidak ada maka akan diasumsikan
      new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
      new Date(2011, 0, 1); // sama, jam dan yang lainnya secara default adalah 0
      2
    • Jika
      new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
      new Date(2011, 0, 1); // sama, jam dan yang lainnya secara default adalah 0
      _3 tidak ada, mereka akan dianggap sama dengan
      let date = new Date("2017-01-26");
      alert(date);
      // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
      // disesuaikan menurut zona waktu dimana kodenya berjalan
      // Jadi hasilnya mungkin bisa
      // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
      // atau
      // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
      9

    Contoh

    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // sama, jam dan yang lainnya secara default adalah 0

    Presisi minimum adalah 1ms (1/1000 detik)

    let date = new Date(2011, 0, 1, 2, 3, 4, 567);
    alert( date ); // 1.01.2011, 02:03:04.567

    Ada beberapa metode untuk mengakses tahun, bulan, dan lainnya dari objek

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3

    getFullYear() Mendapat tahun (4 digit) getMonth() Mendapat bulan, dari 0 sampai 11. getDate() mendapatkan hari dalam sebulan, dari 1 hingga 31, nama metodenya terlihat sedikit aneh. getHours(), getMinutes(), getSeconds(), getMilliseconds() Dapatkan komponen yang relevan

    Bukan

    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // sama, jam dan yang lainnya secara default adalah 0
    6, Tapi
    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // sama, jam dan yang lainnya secara default adalah 0
    7

    Banyak mesin Javascript menerapkan metode non-standar

    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // sama, jam dan yang lainnya secara default adalah 0
    6. Metode ini sudah usang. Itu terkadang mengembalikan tahun dengan 2 digit. Tolong jangan gunakan itu. Gunakan
    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // sama, jam dan yang lainnya secara default adalah 0
    _7 untuk tahun ini

    Selain itu, kita bisa mendapatkan hari dalam seminggu

    getDay() Dapatkan hari dalam seminggu, mulai dari
    let date = new Date("2017-01-26");
    alert(date);
    // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
    // disesuaikan menurut zona waktu dimana kodenya berjalan
    // Jadi hasilnya mungkin bisa
    // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
    // atau
    // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
    9 (Minggu) hingga
    let date = new Date(2011, 0, 1, 2, 3, 4, 567);
    alert( date ); // 1.01.2011, 02:03:04.567
    1 (Sabtu). Hari pertama akan selalu menjadi hari Minggu, di beberapa negara bukan minggu, dan tidak dapat diubah

    Semua metode di atas mengembalikan komponen yang sesuai dengan zona waktu lokal

    Ada juga pasangan UTC, yang menampilkan hari dalam bulan, tahun, dan seterusnya untuk zona waktu UTC+0. getUTCFullYear(), getUTCMonth(), getUTCDay(). Cukup dengan memasukkan

    let date = new Date(2011, 0, 1, 2, 3, 4, 567);
    alert( date ); // 1.01.2011, 02:03:04.567
    _2 tepat setelah
    let date = new Date(2011, 0, 1, 2, 3, 4, 567);
    alert( date ); // 1.01.2011, 02:03:04.567
    3

    Jika zona waktu lokal Anda diubah menjadi zona yang terkait dengan UTC, maka kode di bawah ini akan menunjukkan waktu yang berbeda

    // tanggal sekarang
    let date = new Date();
    
    // jam didalam zona waktu kamu sekarang
    alert( date.getHours() );
    
    // jam di zona waktu UTC+0 (waktu london tanpa waktu musim panas)
    alert( date.getUTCHours() );

    Selain metode yang diberikan, ada dua metode khusus yang tidak memiliki variasi waktu UTC

    getTime()

    Mengembalikan stempel waktu untuk tanggal – sejumlah milidetik yang telah berlalu sejak 1 Januari 1970 UTC+0

    getTimezoneOffset()

    Mengembalikan selisih antara UTC dan zona waktu lokal, dalam hitungan menit

    // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
    // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
    alert( new Date().getTimezoneOffset() );

    Metode berikut memungkinkan kita untuk mengatur komponen tanggal/waktu

    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      _4
    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      _5
    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      _6
    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      _7
    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      _8
    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      _9
    • // tanggal sekarang
      let date = new Date();
      
      // jam didalam zona waktu kamu sekarang
      alert( date.getHours() );
      
      // jam di zona waktu UTC+0 (waktu london tanpa waktu musim panas)
      alert( date.getUTCHours() );
      _0
    • // tanggal sekarang
      let date = new Date();
      
      // jam didalam zona waktu kamu sekarang
      alert( date.getHours() );
      
      // jam di zona waktu UTC+0 (waktu london tanpa waktu musim panas)
      alert( date.getUTCHours() );
      _1 (setel semua tanggal dengan milidetik sejak 01. 01. 1970 UTC)

    Semua kecuali salah satunya adalah

    // tanggal sekarang
    let date = new Date();
    
    // jam didalam zona waktu kamu sekarang
    alert( date.getHours() );
    
    // jam di zona waktu UTC+0 (waktu london tanpa waktu musim panas)
    alert( date.getUTCHours() );
    _2 memiliki varian UTC, misalnya.
    // tanggal sekarang
    let date = new Date();
    
    // jam didalam zona waktu kamu sekarang
    alert( date.getHours() );
    
    // jam di zona waktu UTC+0 (waktu london tanpa waktu musim panas)
    alert( date.getUTCHours() );
    _3

    Seperti yang bisa kita lihat, beberapa metode dapat mengatur beberapa komponen sekaligus, misalnya

    // tanggal sekarang
    let date = new Date();
    
    // jam didalam zona waktu kamu sekarang
    alert( date.getHours() );
    
    // jam di zona waktu UTC+0 (waktu london tanpa waktu musim panas)
    alert( date.getUTCHours() );
    4. Komponen yang tidak disebutkan tidak akan diubah

    Contoh

    let today = new Date();
    
    today.setHours(0);
    alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // masih hari ini, tapi tepat 00:00:00

    Koreksi otomatis adalah fitur yang sangat berguna dari objek

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3. Kita bisa menetapkan nilai yang di luar jangkauan, dan itu akan menyesuaikan sendiri

    Contoh

    let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
    alert(date); // ...adalah 1st Feb 2013!

    komponen yang dapat dilepas yang berada di luar jangkauan akan diganti secara otomatis

    Kita dapat mengatakan untuk menambahkan tanggal "28 feb 2016" menjadi 2 hari. Itu mungkin "2 Maret" atau "1 Maret" dalam kasus tahun kabisat. Kita tidak perlu memikirkan itu. Tinggal 2 hari lagi. Objek

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    _3 akan melakukan sisanya

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    0

    Fitur ini sering digunakan untuk mendapatkan tanggal setelah diberikan waktu tertentu, coba dapatkan tanggal "70 detik setelah momen ini"

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    1

    Kami juga dapat menetapkan nilai nol atau bahkan negatif. Contoh

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    2

    Ketika sebuah objek

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 dikonversi menjadi angka, itu menjadi stempel waktu seperti
    let date = new Date("2017-01-26");
    alert(date);
    // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
    // disesuaikan menurut zona waktu dimana kodenya berjalan
    // Jadi hasilnya mungkin bisa
    // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
    // atau
    // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
    1

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    3

    Efek yang perlu diperhatikan. tanggal bisa dikurangi, hasilnya selisih milidetik

    Dapat digunakan untuk mengukur waktu

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    4

    Jika kita ingin mengukur waktu, kita tidak membutuhkan benda

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3

    Ada metode khusus

    // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
    // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
    alert( new Date().getTimezoneOffset() );
    _0 yang mengembalikan stempel waktu saat ini

    Itu praktis sama dengan

    // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
    // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
    alert( new Date().getTimezoneOffset() );
    _1, tetapi tidak membuat objek perantara
    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3. Sehingga lebih cepat dan tidak menambah beban pembuangan sampah

    Sebagian besar dari mereka digunakan untuk kenyamanan atau ketika kinerja menjadi perhatian, seperti permainan di Javascript atau aplikasi khusus lainnya

    Jadi ini mungkin lebih baik

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    5

    Jika kita menginginkan kinerja yang andal dari fungsi-fungsi yang membutuhkan banyak sumber daya CPU, kita harus berhati-hati

    Sebagai contoh, mari bandingkan dua fungsi yang menghitung selisih antara dua tanggal. mana yang lebih cepat?

    Pengurangan kinerja seperti itu sering disebut sebagai "tolok ukur"

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    6

    kedua fungsi tersebut melakukan hal yang persis sama, tetapi salah satunya menggunakan

    let date = new Date("2017-01-26");
    alert(date);
    // Waktunya belum di set, jadi itu diasumsikan tengah malam GMT dan
    // disesuaikan menurut zona waktu dimana kodenya berjalan
    // Jadi hasilnya mungkin bisa
    // Kamis Jan 26 2017 11:00:00 GMT+1100 (Waktu timur siang hari Australia )
    // atau
    // Rabu Jan 25 2017 16:00:00 GMT-0800 (Waktu standar pasifik)
    1 secara eksplisit untuk mendapatkan tanggal dalam milidetik, dan yang lainnya menggunakan konversi tanggal ke angka. Hasil mereka akan selalu sama

    Jadi, mana yang lebih cepat?

    Cara sederhana mungkin dengan menjalankannya beberapa kali dan menghitung perbedaan waktu. Untuk kasus ini, fungsinya sangat sederhana, jadi kita hanya perlu melakukannya minimal 100.000 kali

    Mari berhitung

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    7

    Wow. Menggunakan

    // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
    // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
    alert( new Date().getTimezoneOffset() );
    _4 lebih cepat. itu karena tidak ada perubahan tipe, itu akan membuat mesin lebih mudah untuk dioptimalkan

    Oke, kita punya sesuatu. Tapi itu bukan tes kemampuan yang bagus

    Bayangkan pada saat menjalankan

    // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
    // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
    alert( new Date().getTimezoneOffset() );
    5 CPU melakukan hal lain, dan itu menghabiskan sumber dayanya. Dan pada saat menjalankan
    // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
    // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
    alert( new Date().getTimezoneOffset() );
    _6 pekerjaan selesai

    Skenario nyata untuk Sistem Operasi multi-proses modern

    Akibatnya, uji kemampuan pertama memiliki lebih sedikit sumber daya CPU daripada yang kedua. Itu dapat menyebabkan hasil yang menyesatkan

    Untuk pengujian yang lebih andal, seluruh pengujian harus dijalankan beberapa kali

    Contoh, seperti ini

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    _8

    Mesin Javascript modern mulai menggunakan optimasi tinggi hanya untuk "kode panas" yang dieksekusi beberapa kali (tidak perlu optimasi hal-hal yang jarang dieksekusi). Jadi, pada contoh di atas, eksekusi pertama tidak benar-benar dioptimalkan. Kita mungkin perlu menambahkan pemanasan

    // 0 berarti 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // sekarang tambahkan 24 jam, ambil 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    _9

    Berhati-hatilah saat melakukan microbenchmarking/pengujian kemampuan mikro

    Mesin Javascript modern melakukan banyak optimasi. mereka mungkin merekayasa hasil dari "pengujian buatan" dibandingkan dengan "penggunaan normal", terutama saat kita mengukur kemampuan sesuatu yang sangat kecil, seperti cara kerja operator, atau fungsi bawaan. Jadi jika Anda serius ingin memahami kinerja, pelajari cara kerja mesin Javascript. dan kemudian Anda mungkin tidak memerlukan microbenchmarking sama sekali

    Kumpulan artikel bagus tentang V8 dapat ditemukan di http. //mrale. ph

    Metode tanggal. parse(str) dapat membaca tanggal dari sebuah string

    Bentuk string harus.

    // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
    // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
    alert( new Date().getTimezoneOffset() );
    7, di mana

    • // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
      // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
      alert( new Date().getTimezoneOffset() );
      8 – adalah tanggal. tahun-bulan-hari
    • Karakter dari
      // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
      // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
      alert( new Date().getTimezoneOffset() );
      9 digunakan sebagai pembatas
    • let today = new Date();
      
      today.setHours(0);
      alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
      
      today.setHours(0, 0, 0, 0);
      alert(today); // masih hari ini, tapi tepat 00:00:00
      0 – adalah waktu. jam, menit, detik, dan milidetik
    • Bagian opsional
      let today = new Date();
      
      today.setHours(0);
      alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
      
      today.setHours(0, 0, 0, 0);
      alert(today); // masih hari ini, tapi tepat 00:00:00
      1 menunjukkan zona waktu dalam format
      let today = new Date();
      
      today.setHours(0);
      alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
      
      today.setHours(0, 0, 0, 0);
      alert(today); // masih hari ini, tapi tepat 00:00:00
      2. Satu huruf
      let today = new Date();
      
      today.setHours(0);
      alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
      
      today.setHours(0, 0, 0, 0);
      alert(today); // masih hari ini, tapi tepat 00:00:00
      _3 menunjukkan UTC+0

    Varian yang lebih pendek juga dimungkinkan, seperti

    // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
    // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
    alert( new Date().getTimezoneOffset() );
    8 atau
    let today = new Date();
    
    today.setHours(0);
    alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // masih hari ini, tapi tepat 00:00:00
    5 atau bahkan
    let today = new Date();
    
    today.setHours(0);
    alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // masih hari ini, tapi tepat 00:00:00
    6

    Memanggil

    let today = new Date();
    
    today.setHours(0);
    alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // masih hari ini, tapi tepat 00:00:00
    7 memproses string dalam bentuk yang diberikan dan mengembalikan stempel waktu (angka dalam milidetik dari 1 Januari 1970 UTC+0). Jika formatnya tidak valid, akan mengembalikan
    let today = new Date();
    
    today.setHours(0);
    alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // masih hari ini, tapi tepat 00:00:00
    8

    Contoh

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    0

    Kita dapat langsung membuat objek

    let today = new Date();
    
    today.setHours(0);
    alert(today); // masih hari ini, tapi jamnya diubah menjadi 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // masih hari ini, tapi tepat 00:00:00
    _9 dari timestamp

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    _1

    • Tanggal dan waktu dalam Javascript diwakili oleh objek Tanggal. Kami tidak dapat membuat "hanya tanggal" atau "hanya waktu". objek
      // 31 Dec 1969
      let Dec31_1969 = new Date(-24 * 3600 * 1000);
      alert( Dec31_1969 );
      _3 selalu membawa keduanya
    • Bulan dihitung dari nol (ya, Januari adalah bulan ke nol)
    • Hari dalam seminggu di
      let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
      alert(date); // ...adalah 1st Feb 2013!
      _1 juga dihitung dari nol (yaitu satu minggu)
    • // 31 Dec 1969
      let Dec31_1969 = new Date(-24 * 3600 * 1000);
      alert( Dec31_1969 );
      3 secara otomatis mengoreksi dirinya sendiri ketika komponen di luar jangkauan disetel. Baik untuk menambah/mengurangi hari/bulan/jam
    • Tanggal dapat dikurangi, memberikan perbedaan dalam milidetik. Itu karena
      // 31 Dec 1969
      let Dec31_1969 = new Date(-24 * 3600 * 1000);
      alert( Dec31_1969 );
      _3 menjadi stempel waktu saat dikonversi menjadi angka
    • Gunakan
      // jika kamu berada didalam zona waktu UTC-1, mengeluarkan 60
      // jika kamu berada di zona waktu UTC+3, mengeluarkan -180
      alert( new Date().getTimezoneOffset() );
      _0 untuk mendapatkan stempel waktu dengan cepat

    Perhatikan bahwa tidak seperti sistem lain, stempel waktu dalam Javascript dalam milidetik, bukan detik

    Terkadang kita menginginkan pengukuran yang lebih akurat. Javascript sendiri tidak mendukung cara mengukur waktu dalam mikrodetik (1 juta per detik), tetapi sebagian besar lingkungan menyediakannya. Misalnya, browser memiliki kinerja. now() yang memberikan jumlah milidetik dari awal halaman dimuat dengan presisi mikrodetik (3 digit setelah titik)

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    _2

    Node. js memiliki modul

    let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
    alert(date); // ...adalah 1st Feb 2013!
    _5 dan cara lain. Secara teknis, hampir sebagian besar perangkat dan lingkungan memungkinkan untuk mendapatkan presisi, hanya saja tidak di
    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3