Waktu Lokal: Bagaimana Mengenal Waktu Saat Ini di Perl

click fraud protection

Perl memiliki fungsi bawaan yang berguna untuk menemukan tanggal dan waktu saat ini di skrip Anda. Namun, ketika kita berbicara tentang menemukan waktu, kita berbicara tentang waktu yang saat ini ditetapkan pada mesin yang menjalankan skrip. Misalnya, jika Anda menjalankan skrip Perl pada mesin lokal Anda, localtime akan mengembalikan waktu saat ini yang telah Anda tentukan, dan mungkin diatur ke zona waktu Anda saat ini.

Ketika Anda menjalankan skrip yang sama di server web, Anda mungkin menemukan bahwa waktu lokal mati dari waktu lokal pada sistem desktop Anda. Server mungkin berada di zona waktu yang berbeda atau tidak diatur dengan benar. Setiap mesin mungkin memiliki gagasan yang sama sekali berbeda tentang apa waktu lokal itu dan mungkin perlu beberapa penyesuaian, baik di dalam skrip atau di server itu sendiri, untuk membuatnya agar sesuai dengan apa yang Anda harapkan.

Fungsi localtime mengembalikan daftar penuh data tentang waktu saat ini, beberapa di antaranya perlu disesuaikan. Jalankan program di bawah ini dan Anda akan melihat setiap elemen dalam daftar dicetak pada garis dan dipisahkan oleh spasi.

instagram viewer

#! / usr / local / bin / perl
@timeData = waktu lokal (waktu);
print join ('', @timeData);

Anda harus melihat sesuatu yang mirip dengan ini, walaupun jumlahnya bisa sangat berbeda.

20 36 8 27 11 105 2 360 0

Elemen-elemen waktu saat ini adalah, dalam urutan:

  • Detik melewati menit
  • Menit melewati jam
  • Jam lewat tengah malam
  • Hari dalam sebulan
  • Bulan melewati awal tahun
  • Jumlah tahun sejak 1900
  • Jumlah hari sejak awal minggu (Minggu)
  • Jumlah hari sejak awal tahun
  • Apakah atau tidak penghematan siang hari aktif

Jadi, jika kita kembali ke contoh dan mencoba membacanya, Anda akan melihat bahwa ini adalah 8:36:20 pada tanggal 27 Desember 2005, sudah 2 hari lewat Minggu (Selasa), dan 360 hari sejak dimulainya tahun. Waktu musim panas tidak aktif.

Membuat Perl Waktu Lokal Dapat Dibaca

Beberapa elemen dalam array yang mengembalikan localtime agak canggung untuk dibaca. Siapa yang akan memikirkan tahun ini dalam hal jumlah tahun terakhir 1900? Mari kita lihat contoh yang membuat tanggal dan waktu kita lebih jelas.

 #! / usr / local / bin / perl

 @ bulan = qw (Jan Feb Mar Apr Mei Jun Jul Agu Sep Okt Nov Des);

 @weekDays = qw (Sen Sen Sel Rab Kam Sab Sen Sab);

 ($ detik, $ menit, $ jam, $ dayOfMonth, $ bulan, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();

 $ tahun = 1900 + $ tahunOffset;

 $ theTime = "$ jam: $ menit: $ detik, $ weekDays [$ dayOfWeek] $ bulan [$ bulan] $ dayOfMonth, $ tahun";

 cetak $ theTime; 

Ketika Anda menjalankan program, Anda akan melihat tanggal dan waktu yang lebih mudah dibaca seperti ini:

 9:14:42, Rab 28 Des 2005 

Jadi apa yang kita lakukan untuk membuat versi yang lebih mudah dibaca ini? Pertama, kami menyiapkan dua array dengan nama bulan dan hari dalam seminggu.

 @ bulan = qw (Jan Feb Mar Apr Mei Jun Jul Agu Sep Okt Nov Des);

 @weekDays = qw (Sen Sen Sel Rab Kam Sab Sen Sab); 

Karena fungsi localtime mengembalikan elemen-elemen ini dalam nilai mulai dari 0-11 dan 0-6 masing-masing, mereka adalah kandidat yang sempurna untuk sebuah array. Nilai yang dikembalikan oleh localtime dapat digunakan sebagai alamat numerik untuk mengakses elemen yang benar dalam array.

 $ bulan [$ bulan] $ weekDays [$ dayOfWeek]


Langkah selanjutnya adalah mendapatkan semua nilai dari fungsi localtime. Dalam contoh ini, kami menggunakan pintasan Perl untuk secara otomatis menempatkan setiap elemen dalam array localtime ke dalam variabelnya sendiri. Kami telah memilih nama sehingga mudah diingat elemen mana yang mana.

 ($ detik, $ menit, $ jam, $ dayOfMonth, $ bulan, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();


Kita juga perlu menyesuaikan nilai tahun ini. Ingat bahwa localtime mengembalikan jumlah tahun sejak 1900, jadi untuk menemukan tahun sekarang, kita perlu menambahkan 1900 ke nilai yang kita berikan.

 $ tahun = 1900 + $ tahunOffset;

Cara Mengenal Waktu GM Saat Ini di Perl

Katakanlah Anda ingin menghindari semua kemungkinan kebingungan zona waktu dan mengendalikan sendiri offset itu. Mendapatkan waktu saat ini dalam waktu lokal akan selalu mengembalikan nilai yang didasarkan pada pengaturan zona waktu mesin - sebuah server di AS akan kembali satu kali, sementara server di Australia akan mengembalikan satu hari hampir berbeda karena zona waktu perbedaan.

Perl memiliki fungsi memberi tahu waktu yang berguna kedua yang bekerja dengan cara yang persis sama dengan waktu lokal, tetapi alih-alih mengembalikan waktu yang telah ditentukan untuk mesin Anda zona waktu, ia kembali Waktu Universal Terkoordinasi (disingkat sebagai UTC, juga disebut Greenwich Mean Time atau GMT). Cukup disebut fungsi gmtime.

 #! / usr / local / bin / perl

 @timeData = gmtime (waktu);

 print join ('', @timeData); 

Selain fakta bahwa waktu yang dikembalikan akan sama pada setiap mesin dan dalam GMT, tidak ada perbedaan antara fungsi gmtime dan localtime. Semua data dan konversi dilakukan dengan cara yang sama.

 #! / usr / local / bin / perl

 @ bulan = qw (Jan Feb Mar Apr Mei Jun Jul Agu Sep Okt Nov Des);

 @weekDays = qw (Sen Sen Sel Rab Kam Sab Sen Sab);

 ($ detik, $ menit, $ jam, $ dayOfMonth, $ bulan, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = gmtime ();

 $ tahun = 1900 + $ tahunOffset;

 $ theGMTime = "$ jam: $ menit: $ detik, $ weekDays [$ dayOfWeek] $ bulan [$ bulan] $ dayOfMonth, $ tahun";

 cetak $ theGMTime; 

  1. localtime akan mengembalikan waktu lokal saat ini pada mesin yang menjalankan skrip.
  2. gmtime akan mengembalikan Greenwich Mean Time, atau GMT (atau UTC) universal.
  3. Nilai pengembalian mungkin tidak seperti yang Anda harapkan, jadi pastikan Anda mengonversinya seperlunya.
instagram story viewer