perl 的 localtime、timelocal、strftime關於時間的函數

timelocal()是從格式化的時間輸入轉換成秒;而localtime()是從秒轉換成格式化的時間。返回的年份都是對1900的偏移值。

timelocal用法如下:

my $second_str = timelocal($ss,$mi,$hh,$dd,$mm,$yy);
our ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime($second_str);$year = $year+1900;

localtime函數,根據它所在的上下文,可以用兩種完全不同的方法來運行。

1、在標量上下文中,localtime函數返回一個格式化很好的當前時間字符串。

    例如,print scalar (localtime)這個代碼,它輸出的結果將類似於Thu Sep 16 23:00:06 1999。

2、在列表上下文中,localtime將返回能夠描述當前時間的一個元素列表:

 ($sec,$min,$hour,$mday,$mon,$year_off,$wday,$yday,$isdat) = localtime;

    字段   值

    $sec    秒,0 ~ 59

    $min    分,0 ~ 59

    $hour    時,0 ~ 23

    $mday    月份中的日期, 1 ~ 2 8、2 9、3 0或3 1

    $mon    年份中的月份, 0 ~ 11(這裏請特別要小心)

    $year_off   1900年以來的年份。將1900加上這個數字,得出正確的4位數年份

    $wday    星期幾,0 ~ 6

    $yday    一年中的第幾天,0 ~ 364或365

    $isdst    如果夏令時有效,則爲真

my  ($sec,$min,$hour,$mday,$mon,$year) = (localtime)[0..5];
($sec,$min,$hour,$mday,$mon,$year) = (
    sprintf("%02d", $sec),
    sprintf("%02d", $min),
    sprintf("%02d", $hour),
    sprintf("%02d", $mday),
    sprintf("%02d", $mon + 1),
    $year + 1900
    );
print "$year-$mon-$mday $hour:$min:$sec\n";

    得到的結果是:2018-06-07 09:43:38

strftime函數主要是用來格式化時間的。

  1. print strftime("%Y-%m-%d %H:%M:%S\n", localtime(time));
  2. 附上strftime函數的格式參數說明

  3. 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: 從1970年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等)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章