Apa waktu utc di javascript?

Saat membangun aplikasi web, kami biasanya mempertimbangkan dua jenis zona waktu. Yang paling umum adalah waktu server, yang bertindak sebagai referensi untuk pelacakan tanggal dan waktu, yang cukup mudah

Namun, ada beberapa contoh di mana kami perlu melacak tanggal dan waktu pengguna akhir. Dalam situasi ini, kita perlu merekam waktu dari browser pengguna menggunakan JavaScript. Selain itu, pengguna ini mungkin berasal dari zona waktu yang berbeda, dan menanganinya bisa jadi rumit

Artikel ini akan membahas konsep yang relevan dengan zona waktu dan metode penanganannya menggunakan JavaScript

Zona Waktu GMT, Offset, UTC

Jam zona waktu yang berbeda

Sebelum masuk ke detail, mari kita pahami beberapa terminologi seputar zona waktu

1. GMT — Referensi Universal

Dunia dibagi menjadi zona waktu, masing-masing dengan offsetnya. Offset ini adalah jumlah menit yang ditambahkan ke waktu dunia untuk mendapatkan zona waktu masing-masing negara

Untuk melakukan itu kita membutuhkan referensi yang merupakan Greenwich Mean Time (GMT). Ini bergerak dari Kutub Utara ke Kutub Selatan, melewati distrik Greenwich di Old Royal Observatory London

Jika Anda berada di sebelah timur Greenwich Meridian, waktu setempat Anda biasanya lebih awal dari GMT (misalnya, waktu setempat di Tiongkok adalah GMT +8 jam). Sebaliknya, waktu setempat berada di belakang GMT di sebelah barat Meridian Greenwich (mis. g. waktu setempat di New York adalah GMT -5 jam di musim dingin dan GMT -4 jam di musim panas)

2. Offset — Perbedaan dari Referensi

Zona waktu mengimbangi jumlah jam atau menit di depan atau di belakang GMT

Karena Daylight Saving Time, offset zona waktu mungkin berubah sepanjang tahun. Selain itu, undang-undang dapat mengubah jadwal offset atau penghematan siang hari zona waktu. Misalnya, saat kami menyatakan bahwa Indiana beralih dari Waktu Tengah ke Waktu Timur, zona waktu Indiana bergeser dari satu offset ke offset lainnya

Biasanya negara-negara menamai zona waktu mereka dengan nama mereka sendiri. Misalnya, zona waktu Korea dikenal sebagai KST (Waktu Standar Korea), dan memiliki nilai offset spesifik KST = UTC+09. 00

2. UTC — Alternatif yang lebih baik untuk GMT

Banyak orang secara keliru percaya bahwa GMT dan UTC adalah hal yang sama, sering digunakan secara bergantian. Tetapi bagaimana jika saya memberi tahu Anda bahwa mereka tidak sama?

UTC dibuat pada tahun 1972 untuk mengatasi masalah perlambatan rotasi bumi. Frekuensi atom cesium digunakan untuk menetapkan standar waktu dalam sistem waktu ini berdasarkan Waktu Atom Internasional. Dengan kata lain, UTC adalah pengganti GMT yang lebih baik. Tapi, perbedaannya hampir tidak terlihat untuk perkembangan sehari-hari

var d = new Date();
var n = d.getTimezoneOffset(); // Returns UTC Offset in Minutes

Menggunakan Pemrosesan Waktu Tanggal dengan JavaScript dalam Praktek

JavaScript menyediakan objek Tanggal dengan berbagai metode untuk melakukan perhitungan terkait tanggal dan waktu. Namun, Anda memiliki pilihan untuk menggunakannya atau menggunakan pustaka yang lebih disempurnakan untuk melakukan pemrosesan waktu Tanggal dalam kode Anda. Pertama mari kita lihat apa yang kita dapatkan dengan objek tanggal JavaScript

Operasi Tanggal Waktu — Menggunakan JavaScript Murni

Objek Tanggal di JavaScript mengelola data waktu menggunakan angka absolut, seperti waktu Unix, secara internal. Konstruktor dan metode seperti parse(),getHour(),setHour()

Namun, penting untuk dicatat bahwa ini dipengaruhi oleh zona waktu lokal klien (tepatnya, zona waktu OS yang menjalankan browser). Akibatnya, menghasilkan objek Tanggal dari data input pengguna akan mewakili zona waktu lokal klien. Objek tanggal melacak waktu dalam UTC secara internal, tetapi biasanya menerima dan menampilkan data dalam waktu lokal komputer tempat ia berjalan

Namun, dalam JavaScript ada metode terbatas yang tersedia secara asli saat bekerja dengan penghitungan tanggal dan waktu di berbagai zona waktu

Namun, ada satu operasi yang dapat dilakukan objek tanggal dengan zona waktu non-lokal

ISOString — Ini dapat mem-parsing teks yang berisi offset UTC numerik zona waktu mana pun. Objek Tanggal keluaran tidak menyimpan waktu dan offset lokal asli

var d = new Date();
d.toISOString() //=> "2021-09-06T13:52:23.770Z"
d.valueOf() //=> 1630936367439 (this is what is actually stored in the object)
_

Operasi Waktu Tanggal — Menggunakan Pustaka Pihak Ketiga

Ada banyak perpustakaan di luar sana yang menyediakan berbagai fungsi pemformatan dan manipulasi tanggal. Kami dapat membagi pustaka ini menjadi dua jenis bergantung pada apakah mereka mendukung API Internasionalisasi ECMAScript atau tidak

Perpustakaan berbasis Intl

Pengembangan baru harus menggunakan salah satu penerapan zona waktu ini, yang menggunakan Intl API untuk datanya

  • (penerus Moment. js)
  • date-fns-tz (ekstensi untuk date-fns )

Perpustakaan Non-Intl

Pustaka ini selalu diperbarui, tetapi mereka bertanggung jawab untuk mengemas data zona waktu mereka, yang bisa sangat penting

  • js-joda/zona waktu (ekstensi untuk js-joda)
  • date-fns-timezone (ekstensi untuk yang lebih lama 1. x tanggal-fns)
  • BigEasy/Zona Waktu
  • tz. js

Juga, penting untuk menghindari beberapa perpustakaan yang dihentikan untuk proyek baru

Perpustakaan yang Dihentikan

Perpustakaan ini telah dinonaktifkan dan tidak boleh digunakan lagi

  • MomenJS
  • WallTime-js
  • TimeZoneJS

Dari semua ini, saya yakin sebagian besar dari Anda sudah familiar dengan Momen, tetapi tim Momen sekarang merekomendasikan pengembangan di masa mendatang dengan Luxon

Saat Anda mencoba menggunakan perpustakaan bawaan, rekomendasi saya adalah mencoba bekerja dengan dokumentasinya. Kemudian, setelah Anda memahami dasar-dasarnya, coba terapkan ke kode Anda

Favorit Saya — Tanggal-fns

Date-fns adalah perpustakaan kecil yang memiliki API sederhana dengan banyak fungsi kecil untuk dimainkan. Dengan hampir 140 fungsi, Date-fn_ disebut sebagai Lodash untuk tanggal

Date-fns dapat memiliki keuntungan sebagai berikut

  • Abadi dan murni
  • Tanggal asli
  • Modular
  • Cepat
  • Dokumentasi
  • I18n
  • TypeScript dan Flow

Koleksi paket npm termasuk Date-fns. Anda dapat menginstal date-fns dengan perintah. npm install date-fns

Date-fns kompatibel dengan modul CommonJS dan ES

Anda perlu mengimpor fungsi yang Anda perlukan untuk mulai menguraikan dan menampilkan tanggal; . Mari kita tunjukkan tanggal saat ini saja

//Import the function initially
const {format} = require('date-fns');
//today's date
const today =format(new Date(),'dd.MM.yyyy');
console.log(today);

Bekerja dengan Zona Waktu

Untuk bekerja dengan string tanggal UTC atau ISO, Date-fns mendukung data zona waktu. Ini akan memungkinkan Anda untuk menampilkan tanggal dan waktu dalam waktu lokal pengguna Anda. Tantangan datang saat bekerja dengan beberapa zona waktu. Mari kita lihat bagaimana kita dapat menangani situasi ini menggunakan sebuah contoh

  1. Referensi — Pertama, stempel waktu, UTC, atau string tanggal ISO mewakili titik waktu tetap
  2. Zona waktu spesifik — Kedua, deskriptor zona waktu (mis. g. America/Los Angeles) biasanya merupakan offset atau nama zona waktu IANA

Catatan. Anda perlu menginstal pustaka date-fns-tz menggunakan npm install date-fns-tz

  1. Zonasi waktu ke UTC

2. UTC ke waktu zonasi

Kesimpulan

Beberapa perpustakaan dapat digunakan untuk bekerja dengan zona waktu. Mereka biasanya mengimplementasikan basis data zona waktu IANA standar dan menyediakan fungsi untuk menggunakannya dalam JavaScript, meskipun mereka tidak dapat membuat objek Tanggal berperilaku berbeda.

Pustaka modern menggunakan data zona waktu Intl API, sedangkan pustaka yang lebih lama sering kali memiliki overhead, terutama jika dijalankan di peramban web, karena basis datanya mungkin agak besar

Namun, jika Anda memilih perpustakaan untuk proyek baru, pilih salah satu yang mendukung Intl API, yang kemungkinan akan menjadi bukti masa depan. Kalau tidak, jika Anda hanya berurusan dengan beberapa operasi waktu Tanggal, menggunakan objek Tanggal asli juga baik-baik saja

Saya harap artikel ini membantu Anda menentukan beberapa opsi untuk dipertimbangkan saat bekerja dengan zona waktu di JavaScript. Jika Anda memiliki saran lain, silakan berikan di komentar di bawah

Terima kasih sudah membaca

Bangun dengan komponen independen, untuk kecepatan dan skala

Alih-alih membuat aplikasi monolitik, buat komponen independen terlebih dahulu dan susun menjadi fitur dan aplikasi. Itu membuat pengembangan lebih cepat dan membantu tim membangun aplikasi yang lebih konsisten dan dapat diskalakan

Bagaimana cara mengatur waktu UTC dalam JavaScript?

var sekarang = Tanggal baru(); . var utc = new Date(now. getTime() + sekarang. getTimezoneOffset() * 60000);

Bagaimana cara mendapatkan waktu UTC dalam JavaScript?

Tanggal JavaScript getUTCDate() .

Bagaimana cara memeriksa apakah tanggal adalah UTC JavaScript?

var dt, utcTime; . UTC(tanggal. getFullYear(), dt. getMonth(), dt. .
Anda mengusulkan untuk hanya menggunakan getTime tanpa mengubahnya menjadi UTC. .
getTime mengembalikan milidetik sejak 1 Januari 1970 00. 00 UTC dari stempel waktu yang Anda miliki

Bagaimana cara mengonversi zona waktu ke UTC dalam JavaScript?

Menggunakan Metode toUTCString( ) dan toISOString( ) . Kami beruntung JavaScript menyediakan metode bawaan untuk mengubah tanggal menjadi UTC.