Perl - Tanggal dan Waktu

Bab ini akan memberi Anda pemahaman dasar tentang cara memproses dan memanipulasi tanggal dan waktu di Perl.

Tanggal dan Waktu Saat Ini

Mari kita mulai localtime()fungsi, yang mengembalikan nilai untuk tanggal dan waktu saat ini jika tidak diberi argumen. Berikut ini adalah daftar 9 elemen yang dikembalikan olehlocaltime berfungsi saat menggunakan dalam konteks daftar -

sec,     # seconds of minutes from 0 to 61
min,     # minutes of hour from 0 to 59
hour,    # hours of day from 0 to 24
mday,    # day of month from 1 to 31
mon,     # month of year from 0 to 11
year,    # year since 1900
wday,    # days since sunday
yday,    # days since January 1st
isdst    # hours of daylight savings time

Coba contoh berikut untuk mencetak elemen berbeda yang dikembalikan oleh fungsi localtime () -

#!/usr/local/bin/perl
 
@months = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
@days = qw(Sun Mon Tue Wed Thu Fri Sat Sun);

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
print "$mday $months[$mon] $days[$wday]\n";

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

16 Feb Sat

Jika Anda akan menggunakan fungsi localtime () dalam konteks skalar, maka itu akan mengembalikan tanggal dan waktu dari zona waktu saat ini yang disetel dalam sistem. Coba contoh berikut untuk mencetak tanggal dan waktu sekarang dalam format penuh -

#!/usr/local/bin/perl
 
$datestring = localtime();
print "Local date and time $datestring\n";

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Local date and time Sat Feb 16 06:50:45 2013

Waktu GMT

Fungsinya gmtime()berfungsi seperti fungsi localtime () tetapi nilai yang dikembalikan dilokalkan untuk zona waktu standar Greenwich. Saat dipanggil dalam konteks daftar, $ isdst, nilai terakhir yang dikembalikan oleh gmtime, selalu 0. Tidak ada Waktu Musim Panas di GMT.

Anda harus mencatat fakta bahwa localtime () akan mengembalikan waktu lokal saat ini pada mesin yang menjalankan skrip dan gmtime () akan mengembalikan waktu universal Greenwich Mean Time, atau GMT (atau UTC).

Coba contoh berikut untuk mencetak tanggal dan waktu sekarang tetapi pada skala GMT -

#!/usr/local/bin/perl

$datestring = gmtime();
print "GMT date and time $datestring\n";

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

GMT date and time Sat Feb 16 13:50:45 2013

Format Tanggal dan Waktu

Anda bisa menggunakan fungsi localtime () untuk mendapatkan daftar 9-elemen dan nanti Anda bisa menggunakan printf() berfungsi untuk memformat tanggal dan waktu berdasarkan kebutuhan Anda sebagai berikut -

#!/usr/local/bin/perl
 
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();

printf("Time Format - HH:MM:SS\n");
printf("%02d:%02d:%02d", $hour, $min, $sec);

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Time Format - HH:MM:SS
06:58:52

Waktu zaman

Anda bisa menggunakan fungsi time () untuk mendapatkan waktu epoch, yaitu jumlah detik yang telah berlalu sejak tanggal tertentu, di Unix adalah 1 Januari 1970.

#!/usr/local/bin/perl
 
$epoc = time();

print "Number of seconds since Jan 1, 1970 - $epoc\n";

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Number of seconds since Jan 1, 1970 - 1361022130

Anda dapat mengonversi sejumlah detik menjadi string tanggal dan waktu sebagai berikut -

#!/usr/local/bin/perl

$datestring = localtime();
print "Current date and time $datestring\n";

$epoc = time();
$epoc = $epoc - 24 * 60 * 60;   # one day before of current date.

$datestring = localtime($epoc);
print "Yesterday's date and time $datestring\n";

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Current date and time Tue Jun  5 05:54:43 2018
Yesterday's date and time Mon Jun  4 05:54:43 2018

Fungsi POSIX strftime ()

Anda dapat menggunakan fungsi POSIX strftime()untuk memformat tanggal dan waktu dengan bantuan tabel berikut. Harap dicatat bahwa penentu yang ditandai dengan asterisk (*) bergantung pada lokal.

Penentu Digantikan oleh Contoh
%a Nama hari kerja yang disingkat * Thu
%A Nama lengkap hari kerja * Thursday
%b Nama bulan yang disingkat * Aug
%B Nama bulan lengkap * August
%c Representasi tanggal dan waktu * Thu Aug 23 14:55:02 2001
%C Tahun dibagi 100 dan dipotong menjadi integer ( 00-99) 20
%d Hari dalam sebulan, tanpa bantalan ( 01-31) 23
%D MM/DD/YYKencan singkat , setara dengan%m/%d/%y 08/23/01
%e Hari dalam sebulan, dengan spasi ( 1-31) 23
%F YYYY-MM-DDKencan singkat , setara dengan%Y-%m-%d 2001-08-23
%g Tahun berbasis minggu, dua digit terakhir ( 00-99) 01
%G Tahun berbasis minggu 2001
%h Nama bulan yang disingkat * (sama seperti %b) Aug
%H Jam dalam format 24 jam ( 00-23) 14
%I Jam dalam format 12 jam ( 01-12) 02
%j Hari dalam setahun ( 001-366) 235
%m Bulan sebagai angka desimal ( 01-12) 08
%M Menit ( 00-59) 55
%n Karakter baris baru ( '\n')
%p Penunjukan AM atau PM PM
%r Waktu 12 jam * 02:55:02 pm
%R Waktu 24 jam HH:MM, setara dengan%H:%M 14:55
%S Detik ( 00-61) 02
%t Karakter tab horizontal ( '\t')
%T Format waktu ISO 8601 ( HH:MM:SS), setara dengan%H:%M:%S 14:55
%u ISO 8601 hari kerja sebagai angka dengan Senin sebagai 1( 1-7) 4
%U Nomor minggu dengan hari Minggu pertama sebagai hari pertama dalam minggu pertama ( 00-53) 33
%V Angka minggu ISO 8601 ( 00-53) 34
%w Hari kerja sebagai angka desimal dengan Minggu sebagai 0( 0-6) 4
%W Nomor minggu dengan Senin pertama sebagai hari pertama dari minggu pertama ( 00-53) 34
%x Representasi tanggal * 08/23/01
%X Representasi waktu * 14:55:02
%y Tahun, dua digit terakhir ( 00-99) 01
%Y Tahun 2001
%z

Pengimbangan ISO 8601 dari UTC dalam zona waktu (1 menit = 1, 1 jam = 100)

Jika zona waktu tidak dapat ditentukan, tidak ada karakter

+100
%Z

Nama atau singkatan zona waktu *

Jika zona waktu tidak dapat ditentukan, tidak ada karakter

CDT
%% Sebuah %tanda %

Mari kita periksa contoh berikut untuk memahami penggunaannya -

#!/usr/local/bin/perl
use POSIX qw(strftime);

$datestring = strftime "%a %b %e %H:%M:%S %Y", localtime;
printf("date and time - $datestring\n");

# or for GMT formatted appropriately for your locale:
$datestring = strftime "%a %b %e %H:%M:%S %Y", gmtime;
printf("date and time - $datestring\n");

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

date and time - Sat Feb 16 07:10:23 2013
date and time - Sat Feb 16 14:10:23 2013