perl 时间函数(timelocal,localtime,strftime)小用

版权声明:本文为sam的原创文章,转载请添加出处:http://blog.csdn.net/samed https://blog.csdn.net/samed/article/details/8934804
                                        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-e2445db1a8.css">
                    <div class="htmledit_views">


 

近期依然要投入到万恶的维护行列,确实不是什么好事情。

不过也没法,工资上的去,暂时潜心学习呗。

 

因为项目是新确立的,所以所有的维护脚本都要自己去编写。

其中最烦的莫过于自己对perl不熟,还要写perl脚本。

这次讲几个perl时间函数的用法,在维护中比较常用。

 

目录:(以后再用到会更新)

一、Time::Local 集合。
二、POSIX qw(strftime)函数。

 

一、Time::Local 集合。

这个集合里面主要会用到以下函数:

timelocal()、localtime()。

 

timelocal()是从格式化的时间输入转换成秒;而localtime()是从秒转换成格式化的时间。

用perl的来表示就是如下结果:

my secondstr=timelocal( s e c o n d s t r = t i m e l o c a l ( ss, mi, m i , hh, dd, d d , mm,$yy);

our ( sec, s e c , min, hour, h o u r , day, mon, m o n , year, wday, w d a y , yday, isdst)=localtime( i s d s t ) = l o c a l t i m e ( second_str); year= y e a r = year+1900;

不过这个localtime 稍稍有点复杂,它有两种方式的输出,一种就是如上这一种的数组赋值方式,一种就是直接输出:print localtime($second_str);

这两种的输出结果是不一样的。如下:

 


  
  
  1. perl -e '
  2. use Time::Local;
  3. our ($ss,$mi,$hh,$dd,$mm,$yy) = ( 0, 0, 0, 16, 5, 2013);
  4. my $second_str = timelocal($ss,$mi,$hh,$dd,$mm,$yy);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">print timelocal($ss,$mi,$hh,$dd,$mm,$yy).<span class="hljs-string"><span class="hljs-string">"\n"</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">our ($sec,$min,$ hour,$<span class="hljs-built_in"><span class="hljs-built_in">day</span></span>,$mon,$<span class="hljs-built_in"><span class="hljs-built_in">year</span></span>,$wday,$yday,$isdst) = localtime($second_str);$ year = $<span class="hljs-built_in"><span class="hljs-built_in">year</span></span>+<span class="hljs-number"><span class="hljs-number">1900</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">print localtime($second_str). "\n";
  5. print "$year-$mon-$day $hour:$min:$sec $isdst:$yday:$wday\n"; '

输出结果:


  
  
  1. 1371312000
  2. Sun Jun 16 00 :00 :00 2013
  3. 2013 -5-16 0 :0 :0 0 :166 :0

可以看出,同一个timelocal输出得到的second_str,两种输出方式得到的日期和结果是不一样的。

一个是6月16日,一个是5月16日。差了一个月之多~~~~~

很让人崩溃吧。

 

所以如果使用第一种方式(直接调用,非数组赋值)输出 localtime ,在计算 timelocal 的 second_str 之时,月份要减一,不过第二种的数组赋值方式最后输出的年份要加 1900 才能得到正确的结果。

另外,系统还自带一个 time() 函数,默认返回当前系统时间的 timelocal 。而且还自动月份减一了。

这就有点悲剧了,如果是使用数组方式赋值的话,这个time就不能用了。

 

话说,这两个函数有什么用捏?

主要用途是用来计算 时间差 的。

 

以下函数请保存成模板,随时可以调用。


  
  
  1. #!/usr/bin/perl
  2. use Time::Local;
  3. sub second_str_cal{ #用于计算形似 20130516 这种日期的秒钟数
  4. #input:($date_by_"YYYYMMDD")</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment"><span class="hljs-comment">#output:($second_str1,$second_str2)</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $_cnt = @_;
  5. unless ( $_cnt == <span class="hljs-number"><span class="hljs-number">1</span></span> <span class="hljs-keyword"><span class="hljs-keyword">and</span></span> <span class="hljs-keyword"><span class="hljs-keyword">length</span></span>($_[ 0]) == 8 ){ print "Worng input, please use input like: second_str_cal(20130516) \n"; exit;}
  6. my ($ss,$mi,$hh,$dd,$mm,$yy) = ( 0, 0, 0, substr($_[<span class="hljs-number"><span class="hljs-number">0</span></span>],<span class="hljs-number"><span class="hljs-number">6</span></span>,<span class="hljs-number"><span class="hljs-number">2</span></span>),<span class="hljs-keyword"><span class="hljs-keyword">substr</span></span>($_[ 0], 4, 2), substr($_[<span class="hljs-number"><span class="hljs-number">0</span></span>],<span class="hljs-number"><span class="hljs-number">0</span></span>,<span class="hljs-number"><span class="hljs-number">4</span></span>));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $second_str1 = timelocal($ss,$mi,$hh,$dd,$mm,$yy);
  7. my $second_str2 = timelocal($ss,$mi,$hh,$dd,$mm- 1,$yy);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-string"><span class="hljs-string">"$second_str1,$second_str2"</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">sub</span></span></span><span class="hljs-function"> </span><span class="hljs-title"><span class="hljs-function"><span class="hljs-title">format_time</span></span></span></span>{ <span class="hljs-comment"><span class="hljs-comment">#用于格式化输出日期,依赖 second_str_cal 函数</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment"><span class="hljs-comment">#input:($second_str1,$second_str2)</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment"><span class="hljs-comment">#output:($date_by_"YYYYMMDD",$week_day)</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $_cnt = @_;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">unless</span></span> ( $_cnt == <span class="hljs-number"><span class="hljs-number">2</span></span> ){<span class="hljs-keyword"><span class="hljs-keyword">print</span></span> <span class="hljs-string"><span class="hljs-string">"Worng input, please use input like: format_time(1368692601,1368692601) \n"</span></span>; <span class="hljs-keyword"><span class="hljs-keyword">exit</span></span>;}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = <span class="hljs-keyword"><span class="hljs-keyword">localtime</span></span>($_[<span class="hljs-number"><span class="hljs-number">0</span></span>]);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $year = $year + <span class="hljs-number"><span class="hljs-number">1900</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> ($week_day) = <span class="hljs-keyword"><span class="hljs-keyword">split</span></span>(<span class="hljs-string"><span class="hljs-string">" "</span></span>,<span class="hljs-keyword"><span class="hljs-keyword">localtime</span></span>($_[<span class="hljs-number"><span class="hljs-number">1</span></span>]));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-string"><span class="hljs-string">"$year$mon$day,$week_day"</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">sub</span></span></span><span class="hljs-function"> </span><span class="hljs-title"><span class="hljs-function"><span class="hljs-title">two_day_minus</span></span></span></span>{ <span class="hljs-comment"><span class="hljs-comment">#用于计算两个日期的差,依赖 second_str_cal 函数</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment"><span class="hljs-comment">#input:($date1_by_"YYYYMMDD",$date2_by_"YYYYMMDD")</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment"><span class="hljs-comment">#output:($day_minus)</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $_cnt = @_;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="32"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">unless</span></span> ( $_cnt == <span class="hljs-number"><span class="hljs-number">2</span></span> <span class="hljs-keyword"><span class="hljs-keyword">and</span></span> <span class="hljs-keyword"><span class="hljs-keyword">length</span></span>($_[<span class="hljs-number"><span class="hljs-number">0</span></span>]) == <span class="hljs-number"><span class="hljs-number">8</span></span> <span class="hljs-keyword"><span class="hljs-keyword">and</span></span> <span class="hljs-keyword"><span class="hljs-keyword">length</span></span>($_[<span class="hljs-number"><span class="hljs-number">1</span></span>]) == <span class="hljs-number"><span class="hljs-number">8</span></span> ){<span class="hljs-keyword"><span class="hljs-keyword">print</span></span> <span class="hljs-string"><span class="hljs-string">"Worng input, please use input like: format_time(20130515,20130516) \n"</span></span>; <span class="hljs-keyword"><span class="hljs-keyword">exit</span></span>;}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="33"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="34"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> ($second_str1_1) = <span class="hljs-keyword"><span class="hljs-keyword">split</span></span>(<span class="hljs-string"><span class="hljs-string">","</span></span>,second_str_cal(<span class="hljs-string"><span class="hljs-string">"$_[0]"</span></span>));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="35"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> ($second_str2_1) = <span class="hljs-keyword"><span class="hljs-keyword">split</span></span>(<span class="hljs-string"><span class="hljs-string">","</span></span>,second_str_cal(<span class="hljs-string"><span class="hljs-string">"$_[1]"</span></span>));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="36"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $day_minus = ($second_str2_1-$second_str1_1)/<span class="hljs-number"><span class="hljs-number">24</span></span>/<span class="hljs-number"><span class="hljs-number">60</span></span>/<span class="hljs-number"><span class="hljs-number">60</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="37"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $day_minus = - $day_minus <span class="hljs-keyword"><span class="hljs-keyword">if</span></span>($day_minus &lt;<span class="hljs-number"><span class="hljs-number">0</span></span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="38"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-string"><span class="hljs-string">"$day_minus"</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="39"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="40"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="41"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">sub</span></span></span><span class="hljs-function"> </span><span class="hljs-title"><span class="hljs-function"><span class="hljs-title">n_day_before</span></span></span></span>{ <span class="hljs-comment"><span class="hljs-comment">#用于计算某天的前几天是什么日期,依赖 second_str_cal、format_time 函数</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="42"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment"><span class="hljs-comment">#input:($date1_by_"YYYYMMDD",$n)</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="43"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment"><span class="hljs-comment">#output:($date1_by_"YYYYMMDD")</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="44"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $_cnt = @_;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="45"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">unless</span></span> ( $_cnt == <span class="hljs-number"><span class="hljs-number">1</span></span> <span class="hljs-keyword"><span class="hljs-keyword">and</span></span> <span class="hljs-keyword"><span class="hljs-keyword">length</span></span>($_[<span class="hljs-number"><span class="hljs-number">0</span></span>]) == <span class="hljs-number"><span class="hljs-number">8</span></span> ){<span class="hljs-keyword"><span class="hljs-keyword">print</span></span> <span class="hljs-string"><span class="hljs-string">"Worng input, please use input like: second_str_cal(20130516) \n"</span></span>; <span class="hljs-keyword"><span class="hljs-keyword">exit</span></span>;}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="46"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="47"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> ($second_str1,$second_str2) = <span class="hljs-keyword"><span class="hljs-keyword">split</span></span>(<span class="hljs-string"><span class="hljs-string">","</span></span>,second_str_cal(<span class="hljs-string"><span class="hljs-string">"$_[0]"</span></span>));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="48"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $second_str1_minus = $second_str1 - $_[<span class="hljs-number"><span class="hljs-number">1</span></span>]*<span class="hljs-number"><span class="hljs-number">24</span></span>*<span class="hljs-number"><span class="hljs-number">60</span></span>*<span class="hljs-number"><span class="hljs-number">60</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="49"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $second_str2_minus = $second_str2 - $_[<span class="hljs-number"><span class="hljs-number">1</span></span>]*<span class="hljs-number"><span class="hljs-number">24</span></span>*<span class="hljs-number"><span class="hljs-number">60</span></span>*<span class="hljs-number"><span class="hljs-number">60</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="50"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword"><span class="hljs-keyword">my</span></span> ($date_by_day,$week_day) = <span class="hljs-keyword"><span class="hljs-keyword">split</span></span>(<span class="hljs-string"><span class="hljs-string">","</span></span>,format_time($second_str1_minus,$second_str2_minus));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="51"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-string"><span class="hljs-string">"$date_by_day,$week_day"</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="52"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="53"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="54"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="55"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"><span class="hljs-comment">#*******************************************************</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="56"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $user_day= "20130516";
  8. my ($str1,$str2) = split( ",",second_str_cal( "$user_day"</span></span>));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="58"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword"><span class="hljs-keyword">my</span></span> ($a,$b) = <span class="hljs-keyword"><span class="hljs-keyword">split</span></span>(<span class="hljs-string"><span class="hljs-string">","</span></span>,format_time($str1,$str2));</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="59"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword"><span class="hljs-keyword">print</span></span> <span class="hljs-string"><span class="hljs-string">"\nUser day is:$a, and the week day is:$b\n"</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="60"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"><span class="hljs-comment">#*******************************************************</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="61"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="62"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"><span class="hljs-comment">#*******************************************************</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="63"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $day1="20130516";
  9. my $day2=<span class="hljs-string"><span class="hljs-string">"20130512"</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="65"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $c = two_day_minus($day1,$day2);
  10. my $d = two_day_minus($day2,$day1);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="67"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword"><span class="hljs-keyword">print</span></span> <span class="hljs-string"><span class="hljs-string">"\n$day2 - $day1 = $c(days) $day1 - $day2 = $d(days)\n"</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="68"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"><span class="hljs-comment">#*******************************************************</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="69"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="70"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-comment"><span class="hljs-comment">#*******************************************************</span></span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="71"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $day3= "20130516";
  11. my $n1=<span class="hljs-number"><span class="hljs-number">3</span></span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="73"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $n2=- 2;
  12. my $e = n_day_before($day3,$n1);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="75"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword"><span class="hljs-keyword">my</span></span> $f = n_day_before($day3,$n2);
  13. print "\n$day3\'s $n1 days before is $e; $day3\'s $n2 days before is $f\n\n";
  14. #*******************************************************

测试输出结果:


  
  
  1. User day is: 2013516, and the week day is:Thu
  2. 20130512 - 20130516 = 4(days) 20130516 - 20130512 = 4(days)
  3. 20130516 's 3 days before is 2013513,Mon; 20130516's -2 days before is 2013518,Sat


 

二、POSIX qw(strftime)函数。

讲了这么多,终于到第二个内容,这个简单很多。

使用这个函数,就不用像前面那样使用数组输出这么多参数了,直接利用strftime函数的时间域定义一下格式就O了。

使用:


  
  
  1. #!/usr/bin/perl
  2. use POSIX qw(strftime);
  3. print strftime( "%Y-%m-%d %H:%M:%S\n", localtime( time));

会输出
2010-08-21 07:44:24


就能格式化输出啦,前提是你懂得了前面第一部分的localtime的用法。偷笑

 

这个就不多说了,让大家慢慢去体会。


 

 附上


  
  
  1. Strftime 时间域 (这个和 date 的命令的字符格式是一样的):
  2. %H: 小时( 00.. 23
  3. %I: 小时( 01.. 12
  4. %k: 小时( 0.. 23
  5. %l: 小时( 1.. 12
  6. %M: 分( 00.. 59
  7. %p: 显示出AM或PM
  8. %r: 时间(hh:mm:ss AM或PM), 12小时
  9. %s: 从 197011000000到目前经历的秒数
  10. %S: 秒( 00.. 59
  11. %T: 时间( 24小时制)(hh:mm:ss)
  12. %X: 显示时间的格式(%H:%M:%S)
  13. %Z: 时区 日期域
  14. %a: 星期几的简称( Sun..Sat)
  15. %A: 星期几的全称( Sunday..Saturday)
  16. %b: 月的简称(Jan..Dec)
  17. %B: 月的全称(January..December)
  18. %c: 日期和时间( Mon Nov 8 141246 CST 1999
  19. %d: 一个月的第几天( 01.. 31
  20. %D: 日期(mm/dd/yy)
  21. %h: 和%b选项相同
  22. %j: 一年的第几天( 001.. 366
  23. %m: 月( 01.. 12
  24. %w: 一个星期的第几天( 0代表星期天)
  25. %W: 一年的第几个星期( 00.. 53,星期一为第一天)
  26. %x: 显示日期的格式(mm/dd/yy)
  27. %y: 年的最后两个数字( 1999则是 99
  28. %Y: 年(例如: 1970, 1996等)


 

转载请说明出处,谢谢。

 

———————————————————————-

参考文献:

1. perldoc.perl.org

2. 扶 凯’s blog

 

 

        </div>
            </div>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值