设为首页 收藏本站
查看: 1006|回复: 0

[经验分享] Time::Piece

[复制链接]

尚未签到

发表于 2015-12-27 03:28:12 | 显示全部楼层 |阅读模式
摘要:
  
    use Time::Piece;
my $t = localtime;
print "Time is $t\n";
print "Year is ", $t->year, "\n";
用法:



    $t->sec                 # also available as $t->second
$t->min                 # also available as $t->minute
$t->hour                # 24 hour
$t->mday                # also available as $t->day_of_month
$t->mon                 # 1 = January
$t->_mon                # 0 = January
$t->monname             # Feb
$t->month               # same as $t->monname
$t->fullmonth           # February
$t->year                # based at 0 (year 0 AD is, of course 1 BC)
$t->_year               # year minus 1900
$t->yy                  # 2 digit year
$t->wday                # 1 = Sunday
$t->_wday               # 0 = Sunday
$t->day_of_week         # 0 = Sunday
$t->wdayname            # Tue
$t->day                 # same as wdayname
$t->fullday             # Tuesday
$t->yday                # also available as $t->day_of_year, 0 = Jan 01
$t->isdst               # also available as $t->daylight_savings
$t->hms                 # 12:34:56
$t->hms(".")            # 12.34.56
$t->time                # same as $t->hms
$t->ymd                 # 2000-02-29
$t->date                # same as $t->ymd
$t->mdy                 # 02-29-2000
$t->mdy("/")            # 02/29/2000
$t->dmy                 # 29-02-2000
$t->dmy(".")            # 29.02.2000
$t->datetime            # 2000-02-29T12:34:56 (ISO 8601)
$t->cdate               # Tue Feb 29 12:34:56 2000
"$t"                    # same as $t->cdate
$t->epoch               # seconds since the epoch
$t->tzoffset            # timezone offset in a Time::Seconds object
$t->julian_day          # number of days since Julian period began
$t->mjd                 # modified Julian date (JD-2400000.5 days)
$t->week                # week number (ISO 8601)
$t->is_leap_year        # true if it its
$t->month_last_day      # 28-31
$t->time_separator($s)  # set the default separator (default ":")
$t->date_separator($s)  # set the default separator (default "-")
$t->day_list(@days)     # set the default weekdays
$t->mon_list(@days)     # set the default months
$t->strftime(FORMAT)    # same as POSIX::strftime (without the overhead
# of the full POSIX extension)
$t->strftime()          # "Tue, 29 Feb 2000 12:34:56 GMT"
Time::Piece->strptime(STRING, FORMAT)
# see strptime man page. Creates a new
# Time::Piece object
日期计算:
  简单日期加减



    use Time::Seconds;
my $seconds = $t1 - $t2;
$t1 += ONE_DAY; # add 1 day (constant from Time::Seconds)
  下列的算是是有效的($t1 and $t2 是Time::Piece objects)



    $t1 - $t2; # returns Time::Seconds object
$t1 - 42; # returns Time::Piece object
$t1 + 533; # returns Time::Piece object
  然而 Time::Piece 相加会产生异常,相减返回Time::Seconds object,通过Time::Seconds API返回分钟,小时,天,星期,年。
  除了能加秒, 还有两个API函数能加月,年:



$t->add_months(6);
$t->add_years(5);
  月和年通过负数可以变为减。

日期比较操作
  日期可以使用 &quot;<&quot;, &quot;>&quot;, &quot;<=&quot;, &quot;>=&quot;, &quot;<=>&quot;, &quot;==&quot; and &quot;!=&quot; 进行比较

日期解析
  Time::Piece 通过  strptime()  函数(from FreeBSD), 进行日期格式的转换.



  my $t = Time::Piece->strptime(&quot;Sunday 3rd Nov, 1943&quot;,
&quot;%A %drd %b, %Y&quot;);
print $t->strftime(&quot;%a, %d %b %Y&quot;);
附录一:Time::Seconds

常量:



    ONE_DAY
ONE_WEEK
ONE_HOUR
ONE_MINUTE
ONE_MONTH
ONE_YEAR
ONE_FINANCIAL_MONTH
LEAP_YEAR
NON_LEAP_YEAR
方法:



    my $val = Time::Seconds->new(SECONDS)
$val->seconds;
$val->minutes;
$val->hours;
$val->days;
$val->weeks;
$val->months;
$val->financial_months; # 30 days
$val->years;
$val->pretty; # gives English representation of the delta
附录二:转义符说明:



     %A    is replaced by national representation of the full weekday name.
%a    is replaced by national representation of the abbreviated weekday
name.
%B    is replaced by national representation of the full month name.
%b    is replaced by national representation of the abbreviated month
name.
%C    is replaced by (year / 100) as decimal number; single digits are
preceded by a zero.
%c    is replaced by national representation of time and date.
%D    is equivalent to ``%m/%d/%y''.
%d    is replaced by the day of the month as a decimal number (01-31).
%E* %O*
POSIX locale extensions.  The sequences %Ec %EC %Ex %EX %Ey %EY %Od
%Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy are supposed to
provide alternate representations.
Additionally %OB implemented to represent alternative months names
(used standalone, without day mentioned).
%e    is replaced by the day of the month as a decimal number (1-31);
single digits are preceded by a blank.
%F    is equivalent to ``%Y-%m-%d''.
%G    is replaced by a year as a decimal number with century.  This year
is the one that contains the greater part of the week (Monday as
the first day of the week).
%g    is replaced by the same year as in ``%G'', but as a decimal number
without century (00-99).
%H    is replaced by the hour (24-hour clock) as a decimal number
(00-23).
%h    the same as %b.
%I    is replaced by the hour (12-hour clock) as a decimal number
(01-12).
%j    is replaced by the day of the year as a decimal number (001-366).
%k    is replaced by the hour (24-hour clock) as a decimal number (0-23);
single digits are preceded by a blank.
%l    is replaced by the hour (12-hour clock) as a decimal number (1-12);
single digits are preceded by a blank.
%M    is replaced by the minute as a decimal number (00-59).
%m    is replaced by the month as a decimal number (01-12).
%n    is replaced by a newline.
%O*   the same as %E*.
%p    is replaced by national representation of either &quot;ante meridiem&quot;
(a.m.)  or &quot;post meridiem&quot; (p.m.)  as appropriate.
%R    is equivalent to ``%H:%M''.
%r    is equivalent to ``%I:%M:%S %p''.
%S    is replaced by the second as a decimal number (00-60).
%s    is replaced by the number of seconds since the Epoch, UTC (see
mktime(3)).
%T    is equivalent to ``%H:%M:%S''.
%t    is replaced by a tab.
%U    is replaced by the week number of the year (Sunday as the first day
of the week) as a decimal number (00-53).
%u    is replaced by the weekday (Monday as the first day of the week) as
a decimal number (1-7).
%V    is replaced by the week number of the year (Monday as the first day
of the week) as a decimal number (01-53).  If the week containing
January 1 has four or more days in the new year, then it is week 1;
otherwise it is the last week of the previous year, and the next
week is week 1.
%v    is equivalent to ``%e-%b-%Y''.
%W    is replaced by the week number of the year (Monday as the first day
of the week) as a decimal number (00-53).
%w    is replaced by the weekday (Sunday as the first day of the week) as
a decimal number (0-6).
%X    is replaced by national representation of the time.
%x    is replaced by national representation of the date.
%Y    is replaced by the year with century as a decimal number.
%y    is replaced by the year without century as a decimal number
(00-99).
%Z    is replaced by the time zone name.
%z    is replaced by the time zone offset from UTC; a leading plus sign
stands for east of UTC, a minus sign for west of UTC, hours and
minutes follow with two digits each and no delimiter between them
(common form for RFC 822 date headers).
%+    is replaced by national representation of the date and time (the
format is similar to that produced by date(1)).
%-*   GNU libc extension.    Do not do any padding when performing numeri-
cal outputs.
%_*   GNU libc extension.    Explicitly specify space for padding.
%0*   GNU libc extension.    Explicitly specify zero for padding.
%%    is replaced by '%'.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-156759-1-1.html 上篇帖子: Perl子例程(函数) 下篇帖子: 使用Perl进行网页数据抓取[初学者简明版]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表