Penulis: BUILDER.COM
Tidak ada keraguan bahwa penggunaan skrip JavaScript dapat dengan mudah menampilkan waktu lokal di halaman web dengan melihat langsung jam pengguna. Namun bagaimana jika Anda ingin menampilkan waktu di wilayah lain—misalnya, jika kantor pusat Anda berada di negara lain dan Anda ingin melihat waktu "rumah" dan bukan waktu setempat?
Untuk melakukan hal ini, berbagai perhitungan waktu harus dilakukan untuk mengubah waktu lokal menjadi waktu tujuan. Artikel ini menjelaskan cara melakukan perhitungan ini.
Langkah 1:
Langkah pertama adalah mendapatkan waktu setempat. Dalam JavaScript, hal ini tentunya dapat dilakukan dengan mudah dengan menginisialisasi objek Data().
// membuat objek Tanggal untuk lokasi saat ini
d = new Date();
Dengan memanggil metode getTime() pada objek Data(), Anda dapat menampilkan jumlah milidetik antara 1 Januari 1970 dan waktu saat ini.
// konversi ke msec sejak 1 Jan 1970
localTime = d.getTime();
Langkah 2:
Selanjutnya, temukan nilai offset waktu lokal melalui metode getTimezoneOffset() pada objek Data(). Secara default, metode ini menampilkan hasil nilai offset zona waktu dalam hitungan menit, sehingga nilai ini diubah menjadi milidetik pada perhitungan sebelumnya.
// dapatkan offset UTC lokal dan konversikan ke msec
localOffset = d.getTimezoneOffset() * 60000;
Perhatikan bahwa nilai pengembalian negatif dari metode getTimezoneOffset() menunjukkan bahwa waktu lokal sebelum Waktu Standar Universal (UTC), sedangkan pengembalian positif nilai menunjukkan waktu lokal Setelah Waktu Terkoordinasi Universal (UTC).
Catatan: Jika Anda bertanya-tanya bagaimana saya mendapatkan faktor perkalian 60.000, ingatlah bahwa 1.000 milidetik sama dengan satu detik, dan satu menit sama dengan 60 detik. Oleh karena itu, untuk mengubah menit ke milidetik, kalikan 60 dengan 1.000 sehingga menghasilkan 60.000.
Langkah ketiga
adalah menambahkan waktu lokal dan nilai offset zona waktu lokal untuk mendapatkan waktu standar internasional (UTC) saat ini.
// mendapatkan waktu UTC dalam msec
utc = localTime + localOffset
Di sini, variabel utc berisi waktu standar internasional (UTC) saat ini; Namun, waktu ini dinyatakan sebagai jumlah milidetik dari tanggal 1 Januari 1970 hingga saat ini. Biarlah diungkapkan seperti ini untuk saat ini, karena masih ada beberapa perhitungan yang harus dilakukan.
Langkah keempat adalah
mendapatkan Waktu Standar Internasional (UTC), kemudian memperoleh nilai offset per jam dari Waktu Standar Internasional (UTC) kota target, mengubahnya menjadi milidetik, dan menambahkan Waktu Standar Internasional (UTC).
// dapatkan dan tambahkan offset waktu UTC tujuan
// misalnya, Bombay
// yaitu UTC + 5.5 jam
offset = 5.5;
bombay = utc + (3600000
*offset);
faktor, ingatlah bahwa 1000 milidetik sama dengan satu detik, dan satu jam sama dengan 3600 detik. Oleh karena itu, untuk mengubah jam menjadi milidetik, kalikan 3600 dengan 1000 sehingga menghasilkan 3600000.
Saat ini, variabel bombay berisi waktu lokal di Mumbai, India. Waktu setempat ini dinyatakan sebagai jumlah milidetik dari tanggal 1 Januari 1970 hingga saat ini. Jelas ini tidak masuk akal, jadi kita harus melakukan beberapa perhitungan.
Langkah kelima
adalah menginisialisasi objek Data() baru dan memanggil metode toLocalString() objek ini. Kita mengonversi nilai waktu yang dihitung pada langkah sebelumnya menjadi string tanggal/waktu yang dapat dipahami semua orang.
// konversikan nilai msec ke string tanggal
nd = new Date(bombay);
document.writeln("Waktu Bombay adalah " + nd.toLocaleString() +"
<br>");
Setelahmerangkum
dan memahami langkah-langkah di atas, mari kita lihat lagi skrip ini (Daftar A), yang membuat fungsi kustom kompak calcTime() yang melakukan semua perhitungan dan mengembalikan nilai waktu.
Daftar A
<html>
<head>
<script Language="JavaScript">
// berfungsi untuk menghitung waktu setempat
// di kota lain
// dengan fungsi offset UTC kota tersebut
calcTime(city, offset) {
// membuat objek Tanggal untuk lokasi saat ini
d = Tanggal baru();
// konversikan ke msec
// tambahkan offset zona waktu lokal
// dapatkan waktu UTC dalam msec
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// membuat objek Tanggal baru untuk kota yang berbeda
// menggunakan offset yang disediakan
nd = new Date(utc + (3600000*offset));
// mengembalikan waktu sebagai string
return "Waktu lokal di " + kota + " adalah " + nd.toLocaleString()
}
// dapatkan peringatan waktu Bombay
(calcTime('Bombay', '+5.5'))
;
dapatkan
peringatanwaktu Singapura
(calcTime('Singapura', '+8
'));
// dapatkan peringatan waktu London
(
calcTime('London'
, '+1'));
/body>
</html>
Di sini, fungsi calcTime() menerima nama kota dan nilai offset Waktu Terkoordinasi Universal (UTC) (dalam jam). Kemudian secara internal melakukan semua penghitungan yang dijelaskan di atas dan mengembalikan string yang berisi waktu lokal untuk kota ini.
Berikut beberapa contoh keluaran dari Listing A.
Waktu setempat Mumbai adalah 16:43:51 pada hari Senin, 1 Agustus 2005
Waktu setempat Singapura adalah 19:13:51 pada hari Senin, 1 Agustus 2005
Waktu setempat London adalah 1 Agustus 2005, Senin 12:13:51
Lain kali Anda duduk untuk menulis skrip zona waktu untuk halaman web Anda, semoga skrip ini dapat menghemat waktu Anda. Menikmati! !