持之以恒

          記錄本
          posts - 4, comments - 32, trackbacks - 0, articles - 74
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          perl的時間處理之localtime和strftime

          Posted on 2012-03-28 15:09 小白19870626 閱讀(7678) 評論(0)  編輯  收藏 所屬分類: linux

          大家都是使用的 localtime 來取得當地日期時間和日期。這個函數如果在標量環境時,會以字符串的形式來傳回目前的時間和日期 。默認的 localtime 的函數是以 1970 到今天的秒來做整數計算的。默認這個程序會調用 time 的函數來給它提供一個值。
          使用方法:

          例如,print scalar (localtime)這個代碼,它輸出的結果將類似于Thu Sep 16 23:00:06 1999。在列表上下文中,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 如果夏令時有效,則為真
          不要將19附加給localtime返回的年份。它返回的年份是1900的偏移量。比如,在1999年,年份是99;在2000年中,它是100,將 1999與該值相加,可以在2000年以后正確地產生年份。perl不存在2000年問題,但是,如果簡單地將19(或20)附加給該年份,就會導致程序中產生2000年問題

          真正的年月日 就是: $year_off + 1900 , $mon+1,$mday

          上面這個函數常用,但是返回值非常亂,可讀性非常不好,讓我們很容易出錯,所以我推薦 strftime 這個時間函數。當然,還有另一個模塊 DataTime 也相當不錯。不過 strftime 非常象 Linux 常用的 date 的命令。strftime 是 C 中 POSIX 的一個功能函數。被包含進了 Perl 中。好象 PHP 也是支持的

          使用起來很容易,如下:

          #!/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 從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等)

          常用的實例

          得到日期的全部

          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);'

          Fri 20 Aug 2010 07:56:36 AM CST










          小白
          主站蜘蛛池模板: 彰武县| 公安县| 河曲县| 遂川县| 鄯善县| 广南县| 花莲市| 巩义市| 垫江县| 巩留县| 江都市| 永寿县| 孟津县| 报价| 朝阳县| 颍上县| 长乐市| 鸡西市| 积石山| 天祝| 津市市| 光山县| 晋城| 锡林浩特市| 信阳市| 卓资县| 宝兴县| 东兰县| 湄潭县| 双峰县| 尚志市| 洛扎县| 梅河口市| 郁南县| 旬邑县| 视频| 时尚| 保定市| 盘锦市| 永吉县| 朝阳市|