在 perl 中處理時間,很多模組,很方便,但是剛開始玩的人,可能沒有發現合適的模組,所以使用起來感覺很麻煩.通常大家都 localtime 搞得大家都很火大.我有幸和大師學習了一下,給大家推薦一下乙個模組 strftime.
我們在推薦前,介紹一下 perl 下取時間的今生前世吧.以前我想大家都是使用的 localtime 來取得當地日期時間和日期.這個函式如果在標量環境時,會以字串的形式來傳回目前的時間和日期 .預設的 localtime 的函式是以 1970 到今天的秒來做整數計算的.預設這個程式會呼叫 time 的函式來給它提供乙個值.
使用方法:
01
02
03
04
05
06
07
08
09
10
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)=localtime;
$sec:秒
$min:分
$hour:小時
$mday:日
$mon:月
$year:目前的年減去1990,不是僅將19xx年的19去掉,因此不會有y2k的困擾.
$wday:每週的日期(如sunday是0)
$yday:每年的日期(如jan 1是0)
$isdst:如果日光節約時間使用則是正值,其它為0.
上面這個函式常用,但是返回值非常亂,可讀性非常不好,讓我們很容易出錯,所以我推薦 strftime 這個時間函式.當然,還有另乙個模組 datatime 也相當不錯.不過 strftime 非常象 linux 常用的 date 的命令.strftime 是 c 中 posix 的乙個功能函式.被包含進了 perl 中.好象 php 也是支援的
使用起來很容易,如下:
1
2
3
4
5
#!/usr/bin/perl
use strict;
use warnings;
use posix qw(strftime);
print strftime("%y-%m-%d %h:%m:%s\n", localtime(time));
會輸出
2010-08-21 07:44:24
strftime 時間域這個和 date 的命令的字元格式是一樣的)
% h 小時(00..23)
% i 小時(01..12)
% k 小時(0..23)
% l 小時(1..12)
% m 分(00..59)
% p 顯示出am或pm
% r 時間(hh:mm:ss am或pm),12小時
% s 從2023年1月1日00:00:00到目前經歷的秒數
% s 秒(00..59)
% t 時間(24小時制)(hh:mm:ss)
% x 顯示時間的格式(%h:%m:%s)
% z 時區 日期域
% a 星期幾的簡稱( sun..sat)
% a 星期幾的全稱( sunday..saturday)
% b 月的簡稱(jan..dec)
% b 月的全稱(january..december)
% c 日期和時間( mon nov 8 14:12:46 cst 1999)
% d 乙個月的第幾天(01..31)
% d 日期(mm/dd/yy)
% h 和%b選項相同
% j 一年的第幾天(001..366)
% m 月(01..12)
% w 乙個星期的第幾天(0代表星期天)
% w 一年的第幾個星期(00..53,星期一為第一天)
% x 顯示日期的格式(mm/dd/yy)
% y 年的最後兩個數字( 1999則是99)
% y 年(例如:1970,1996等)
常用的例項
得到日期的全部
perl -mposix -le 'print strftime "%c", localtime();'
sat 21 aug 2010 07:54:34 am cst
得到普通的指定的日期
perl -mposix -le 'print strftime "%a %d %b %y %h:%m:%s %z", localtime();'
sat 21 aug 2010 07:54:11 cst
得到乙個小時以前的時間
perl -mposix -le 'print strftime "%c", localtime(time()-3600);'
sat 21 aug 2010 06:55:54 am cst
得到一天前的時間
perl -mposix -le 'print strftime "%c", localtime(time()-86400);'
在 Perl 下處理時間的小技巧 strftime
在 perl 中處理時間,很多模組,很方便,但是剛開始玩的人,可能沒有發現合適的模組,所以使用起來感覺很麻煩。通常大家都 localtime 搞得大家都很火大。我有幸和大師學習了一下,給大家推薦一下乙個模組 strftime。我們在推薦前,介紹一下 perl 下取時間的今生前世吧。以前我想大家都是使...
perl 時間處理
usr bin perl use posix qw strftime my day ymd strftime y m d localtime time 86400 days my day ymd strftime y m d localtime time 86400 days print day y...
perl時間處理
1 格式化輸出當前時間 perl e use strict use posix qw strftime print strftime y m d h m s n localtime time 2 時間格式轉換 perl e use time local use time piece s 2011 0...