Perl tarikh dan masa


Dalam bab ini kami memperkenalkan kepada anda pemprosesan masa dan tarikh dalam bahasa Perl.

Fungsi yang mengendalikan masa dalam Perl adalah seperti berikut:

  • 1 fungsi time(): mengembalikan tarikh dari 1 Januari 1970 Bilangan saat terkumpul sejak fungsi , gmtime():

    Dapatkan Masa Min Greenwich
  • Masa dan tarikh semasa

  • Seterusnya mari kita lihat
  • localtime( )

    fungsi, yang mengembalikan masa dan tarikh semasa tanpa parameter. 9 simbol berikut mewakili parameter masa dan tarikh yang berbeza:

    sec,     # 秒, 0 到 61
    min,     # 分钟, 0 到 59
    hour,    # 小时, 0 到 24
    mday,    # 天, 1 到 31
    mon,     # 月, 0 到 11
    year,    # 年,从 1900 开始
    wday,    # 星期几,0-6,0表示周日
    yday,    # 一年中的第几天,0-364,365
    isdst    # 如果夏令时有效,则为真
  • Contoh demonstrasi adalah seperti berikut:
#!/usr/bin/perl
 
@months = qw( 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 );
@days = qw(星期天 星期一 星期二 星期三 星期四 星期五 星期六);

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

Hasil keluaran pelaksanaan contoh di atas ialah:

12 六月 星期天

Jika Panggil terus localtime(), yang mengembalikan masa tetapan zon waktu semasa sistem Contoh adalah seperti berikut:

#!/usr/bin/perl
 
$datestring = localtime();
print "时间日期为:$datestring\n";
Hasil output pelaksanaan contoh di atas ialah. :
时间日期为:Sun Jun 12 11:27:31 2016

Greenwich Mean Time (GMT)

Fungsi

gmtime()

Sama seperti localtime(), tetapi ia mengembalikan Waktu Greenwich standard.

#!/usr/bin/perl

$local_datestring = localtime();
print "本地时间日期为:$local_datestring\n";

$gmt_datestring = gmtime();
print "GMT 时间日期为:$gmt_datestring\n";

Hasil keluaran perlaksanaan contoh di atas ialah:

本地时间日期为:Sun Jun 12 11:32:14 2016
GMT 时间日期为:Sun Jun 12 03:32:14 2016

Daripada contoh tersebut kita dapat lihat bahawa masa di China adalah 8 jam berbeza daripada Waktu Min Greenwich.


Format tarikh dan masa

Kita boleh menggunakan 9 elemen masa fungsi localtime() untuk mengeluarkan masa terformat yang perlu dirumuskan. Output yang diformatkan menggunakan fungsi printf():

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

printf("格式化时间:HH:MM:SS\n");
printf("%02d:%02d:%02d", $hour, $min, $sec);
Hasil output contoh di atas ialah:

格式化时间:HH:MM:SS
11:35:23

Epoch Time

Kita boleh menggunakan fungsi time( ) untuk mendapatkan masa zaman, yang mengembalikan bilangan saat sejak 1 Januari 1970. Contohnya adalah seperti berikut:
#!/usr/bin/perl
 
$epoc = time();

print "从1970年1月1日起累计的秒数为:$epoc\n";

Hasil output pelaksanaan contoh di atas ialah:

从1970年1月1日起累计的秒数为:1465702883

Kita boleh output format masa yang kita mahu:

#!/usr/bin/perl

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
print "当期时间和日期:";
printf("%d-%d-%d %d:%d:%d",$year+1990,$mon+1,$mday,$hour,$min,$sec);

print "\n";

$epoc = time();
$epoc = $epoc - 24 * 60 * 60;   # 一天前的时间秒数
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($epoc);
print "昨天时间和日期:";
printf("%d-%d-%d %d:%d:%d",$year+1990,$mon+1,$mday,$hour,$min,$sec);

print "\n";

Hasil output pelaksanaan daripada contoh di atas ialah:

当期时间和日期:2106-6-12 11:49:28
昨天时间和日期:2106-6-11 11:49:28

Fungsi POSIX strftime()

Fungsi strftime() boleh memformat masa ke dalam format yang kita mahu.

Jadual berikut menyenaraikan beberapa simbol pemformatan Simbol * menunjukkan bahawa anda ingin bergantung pada waktu tempatan:

SimbolPeneranganInstance
%aHari minggu Singkatan daripada (Ahad..Sabtu) *Thu
%ANama penuh hari itu minggu (Ahad..Sabtu) * Thursday
%bSingkatan bulan (Jan..Dis) *Aug
%BNama penuh bulan (Januari..Disember) *August
%cTarikh dan masa*Thu Aug 23 14:55:02 2001
%CTahun dibahagikan dengan 100, dan Pembundaran (00-99)20
%dThe hari dalam bulan (01-31)23
%DTarikh, MM/DD/YY bersamaan dengan %m/%d/%y 08/23/01
%eHari dalam sebulan, gunakan ruang untuk mengisi satu digit ( 1-31)23
%FYYYY-MM-DD disingkatkan seperti %Y-%m-%d2001-08-23
%g Dua digit terakhir tahun ini (00-99)01
%gTahun2001
%hSingkatan bulan* (sama seperti %b pilihan)Aug
%HFormat 24 jam (00-23)14
%IJam 12 jam (01-12)02
%jHari pertama dalam setahun (001-366)235
%mbulan (01-12)08
%M Minit (00-59) 55
%nBarisan baharu ('n')
%pmenunjukkan AM atau PMPM
%r Masa (hh: mm : ss AM atau PM), 12 jam *02:55:02 pm
%Rformat masa 24 jamHH:MM, bersamaan dengan %H:%M 14:55
%SSaat (00-61)02
%tTab mendatar ('t')
%T Masa (24 format -jam) (hh:mm:ss), bersamaan dengan %H:%M:%S14:55
%uISO The day format minggu bagi 8601, Isnin ialah 1 (1-7)4
%UBilangan minggu dalam setahun, Ahad ialah hari pertama (00-53)33
%VISO 8601 Minggu (00-53)34
%w Hari dalam seminggu (0 mewakili Ahad) (0-6)4
%WSatu Minggu mana tahun, Isnin ialah hari pertama (00-53)34
%x Format tarikh paparan (mm/dd /yy) *08/23/01
%XFormat masa paparan* 14:55:02
%yTahun, dua digit (00-99)01
%YTahun2001
%zISO 8601 dan zon Waktu UTC mengimbangi (1 minit=1 , 1 jam=100)


+100
%Z Nama semasa zon waktu, seperti "Waktu Piawai China" *


CDT
%% % simbol%

Contohnya adalah seperti berikut:

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

$datestring = strftime "%Y-%m-%d %H:%M:%S", localtime;
printf("时间日期 - $datestring\n");

#  GMT 格式化时间日期
$datestring = strftime "%Y-%m-%d %H:%M:%S", gmtime;
printf("时间日期 - $datestring\n");

Hasil keluaran contoh di atas ialah:

时间日期 - 2016-06-12 12:15:13
时间日期 - 2016-06-12 04:15:13