Tanggal dan waktu merupakan mata kuliah wajib yang tidak dapat dilewati dalam proses pemrograman. Untungnya JavaScript
telah menyiapkan objek bawaan Tanggal (tanggal) untuk kita. Melalui objek ini, kita dapat membuat, menyimpan, memodifikasi, mengukur waktu, mencetak, dan operasi dasar lainnya. Ini adalah salah satu kursus wajib untuk setiap programmer JavaScript
.
sama dengan objek biasa. Kita dapat menggunakan new Date()
untuk membuat objek Date
, dan kita juga dapat meneruskan beberapa parameter inisialisasi selama pembuatan.
tanpa parameter:
let now = new Date()console.log(now)
Hasil eksekusi kodenya adalah sebagai berikut:
Ini hanya menampilkan waktu spesifik ketika kode dieksekusi. Yang ditampilkan di sini adalah 2022年6月22日19点25份24秒
.
membuat objek tanggal dengan parameter milidetik, dengan milliseconds
mengacu pada jumlah milidetik sejak UTC+0 pada 1 Januari 1970 (1 milidetik = 1/1000 detik).
//Buat waktu, misalnya 1970.1.1 titik waktu 0 milidetik misalkan jan01_1970 = Tanggal baru(0) konsol.log(jan01_1970) //Buat waktu yang 3 hari lebih lambat dari titik waktu 1.1 pada tahun 1970 (3 hari * 24 jam * 3600 detik * 1000 milidetik) biarkan jan04_1970 = Tanggal baru (3 * 24 * 3600 * 1000)
Hasil eksekusi kode
Console.log(jan04_1970):
milliseconds
adalah jumlah milidetik yang telah berlalu sejak pukul 00:00:00 pada tanggal 1 Januari 1970, atau disebut stempel waktu .
Stempel waktu adalah representasi digital sederhana dari tanggal. Kami biasanya menggunakan new Date(milliseconds)
untuk membuat tanggal. Jika kita sudah memiliki objek Date
, kita dapat menggunakan date.getTime()
untuk mendapatkan stempel waktu yang sesuai dengan tanggal tersebut.
Catatan:
China berada di Zona 8, jadi waktu pada contoh di atas bukan 00:00:00, melainkan 08:00:00,
Stempel waktu tidak hanya berupa bilangan bulat, tetapi juga dapat berupa angka negatif, misalnya:
//1969-12-31 00:00:00let dec31_1969 = new Date(-24 * 3600 * 1000)console.log(dec31_1969)
code hasil eksekusi:
menggunakan stempel waktu setiap kali dibuat, mungkin kurang nyaman, karena penghitungan stempel waktu masih agak sulit.
Kita juga dapat menggunakan string waktu untuk membuat waktu, misalnya:
let date = new Date('2022-06-22 00:00:00') console.log(date)
hasil eksekusi kode:
year
——harus berupa angka empat digit;month
—— [0,11]
, 0
berarti1
;hours/minutes/sec/ms
- defaultnya adalah 0;misalnya:
let date = new Date(2022,6,22,20,35,33)console.log(date)
hasil eksekusi kode:
Kita juga dapat menentukan jumlah milidetik:
let date = new Date(2022,6,22,20,35,33,777)console.log(date)
Jika kita memiliki objek Date
, kita dapat meneruskan objek yang dibuat -dalam metode objek Date
, dapatkan bagian waktu, seperti tahun, bulan, tanggal, dll.
Misalnya, kita memiliki date
:
let date = new Date(2022,5,22,20,35,33)
getFullYear()
mendapatkan tahun, date.getFullYear()
mengembalikan 2022
getMonth()
bulan, date.getMonth()
mengembalikan 5
, yaitu 6
;getDay()
date.getDay()
getDate()
mendapatkan tanggal bulan ini, date.getDate()
mengembalikan 22
;date.getDay()
mengembalikan 3
;Catatan:
- Tanggal di atas Semuanya didasarkan pada tanggal lokal. Misalnya, saya berada di zona waktu
getFullYear
getYear
Kita juga bisa mendapatkan waktu dalam zona waktu 0
, yaitu waktu UTC
, sesuai dengan getUTCFullYear()
dan getUTCMonth()
, getUTCDay
, dll. Cukup masukkan UTC
setelah get
.
Misalnya:
let date = new Date(2022,5,22,20,35,33)console.log(date.getHours(),date.getUTCHours())
hasil eksekusi kode:
Terlihat juga pada malam hari perbedaan zona waktu China dan zona waktu 0
adalah 8
jam.
getTime()
mengembalikan stempel waktu tanggal, dan metode tidak memiliki mode UTC
;getTimezoneOffset()
mengembalikan perbedaan waktu antara zona waktu lokal dan zona waktu 0
, dalam menit, dan tidak ada mode UTC
kita juga dapat mengatur tanggal melalui metode objek Date
Bagian tertentu dari:
setFullYear(year, [month], [date])
menyetel tahun (bulan, hari)setMonth(month, [date])
menyetel bulan (hari)setDate(date)
menyetel tanggal (hari dalam sebulan)setHours(hour, [min], [sec], [ms])
Menyetel jam (menit, detik, milidetik)setMinutes(min, [sec], [ms])
Tetapkan menit (detik, milidetik)setSeconds(sec, [ms])
Atur detik (milidetik)setMilliseconds(ms)
Atur milidetiksetTime(milliseconds)
(gunakan jumlah milidetik sejak 1970-01-01 00:00:00 UTC+0
untuk menyetel seluruh tanggal)Di antara fungsi-fungsi di atas, hanya setTime()
yang tidak memiliki varian UTC
.
Date
JavaScript
memiliki fungsi kalibrasi otomatis, yang memberi kita kemudahan dalam menghitung waktu.
Misal:
let date = new Date(2022,5,38)//Perhatikan hasil eksekusi kode 38console.log(date) disini
:
Dari hasil eksekusi terlihat bahwa “38 Juni 2022” tidak menyebabkan error pada program, melainkan mengkonversi tanggal menjadi “8 Juli 2022”.
Kasus di atas telah memverifikasi bahwa dalam JavaScript
, tanggal di luar rentang akan secara otomatis ditetapkan oleh objek Date
. Dengan cara ini, kita dapat menggunakan objek Date
untuk menghitung tanggal dengan sangat mudah.
Misalnya, kita dapat menambah dan mengurangi tahun, bulan, dan hari pada tanggal:
misalkan tanggal = Tanggal baru(2022,5,23)//Waktu saat ini adalah 23-6-2022tanggal.setDate(tanggal.getDate() + 8)//Hitung waktu setelah delapan hari
hasil eksekusi kode console.log(tanggal):
Demikian pula, kita juga bisa menggunakan metode date.setSeconds()
untuk menghitung tanggal dalam hitungan detik.
dan Date
tanggal sama dengan nilai kembalian date.getTime()
, yaitu nilai dalam milidetik:
let date = new Date()console.log(+date)
kode Hasil eksekusi:
Karena hakikat waktu adalah angka, kita juga dapat melakukan penghitungan perbedaan waktu dalam ms
(milidetik).
Misal:
let date1 = new Date(2022,5,23)let date2 = new Date(2022,5,24)console.log(`Perbedaan waktu adalah ${date2-date1}ms`)
Hasil eksekusi kodenya adalah :
Jika kita ingin mendapatkan waktu saat ini, pendekatan yang lebih baik adalah dengan menggunakan metode Date.now()
. Metode ini akan mengembalikan stempel waktu saat ini tanpa membuat objek Date
tambahan, yang bagus untuk overhead memori dan pengumpulan sampah, dan kodenya lebih sederhana.
Misalnya:
biarkan mulai = Tanggal.sekarang()untuk(biarkan i = 1;i<100000;i++){ let num = i * i * i;}let end = Date.now()console.log(`consume time ${end - Begin}ms`)
hasil eksekusi kode:
Metode Date.parse()
dapat membaca string tanggal dan mengubahnya menjadi stempel waktu, namun string tersebut harus mematuhi aturan tertentu: YYYY-MM-DDTHH:mm:ss.sssZ
.
YYYY-MM-DD
sesuai dengan年-月-日
T
milik pembatasHH:mm:ss.sss
sesuai dengan时:分:秒.毫秒
Z
dapat berupa zona waktu dalam format +-hh:mm
. Satu karakter Z
UTC+0
string UTC+0 yang dapat ditulis dengan cara disingkat, misalnya: YYYY-MM-DD
, YYYY-MM
, YYYY
.
Untuk memberi Anda sedikit tip:
let ms = Date.parse('2022-06-23T19:38:30.777+08:00')//Time stamp let date = new Date(ms)console.log(date)
eksekusi kode hasil:
JavaScript
menggunakan objek Date
untuk memproses waktu: new Date()
;Date
memiliki banyak metode praktis, dan kita bisa mendapatkan periode waktu tertentuDate
secara otomatis, dan kita bisa langsung menambah dan mengurangi tanggal;Date.now()
dapat memperoleh waktu saat ini secara efisien;