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 GreenwichMasa 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:23Epoch TimeKita 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:
Simbol | Penerangan | Instance |
---|---|---|
%a | Hari minggu Singkatan daripada (Ahad..Sabtu) * | Thu |
%A | Nama penuh hari itu minggu (Ahad..Sabtu) * | Thursday |
%b | Singkatan bulan (Jan..Dis) * | Aug |
%B | Nama penuh bulan (Januari..Disember) * | August |
%c | Tarikh dan masa* | Thu Aug 23 14:55:02 2001 |
%C | Tahun dibahagikan dengan 100, dan Pembundaran (00-99 ) | 20 |
%d | The hari dalam bulan (01-31 ) | 23 |
%D | Tarikh, MM/DD/YY bersamaan dengan %m/%d/%y | 08/23/01 |
%e | Hari dalam sebulan, gunakan ruang untuk mengisi satu digit ( 1-31 ) | 23 |
%F | YYYY-MM-DD disingkatkan seperti %Y-%m-%d | 2001-08-23 |
%g | Dua digit terakhir tahun ini (00-99 ) | 01 |
%g | Tahun | 2001 |
%h | Singkatan bulan* (sama seperti %b pilihan) | Aug |
%H | Format 24 jam (00-23 ) | 14 |
%I | Jam 12 jam (01-12 ) | 02 |
%j | Hari pertama dalam setahun (001-366 ) | 235 |
%m | bulan (01-12 ) | 08 |
%M | Minit (00-59 ) | 55 |
%n | Barisan baharu ('n' ) | |
%p | menunjukkan AM atau PM | PM |
%r | Masa (hh: mm : ss AM atau PM), 12 jam * | 02:55:02 pm |
%R | format masa 24 jamHH:MM , bersamaan dengan %H:%M | 14:55 |
%S | Saat (00-61 ) | 02 |
%t | Tab mendatar ('t' ) | |
%T | Masa (24 format -jam) (hh:mm:ss), bersamaan dengan %H:%M:%S | 14:55 |
%u | ISO The day format minggu bagi 8601, Isnin ialah 1 (1-7 ) | 4 |
%U | Bilangan minggu dalam setahun, Ahad ialah hari pertama (00-53 ) | 33 |
%V | ISO 8601 Minggu (00-53 ) | 34 |
%w | Hari dalam seminggu (0 mewakili Ahad) (0-6 ) | 4 |
%W | Satu Minggu mana tahun, Isnin ialah hari pertama (00-53 ) | 34 |
%x | Format tarikh paparan (mm/dd /yy) * | 08/23/01 |
%X | Format masa paparan* | 14:55:02 |
%y | Tahun, dua digit (00-99 ) | 01 |
%Y | Tahun | 2001 |
%z | ISO 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