当前位置: 代码网 > it编程>网页制作>Perl > 讲Perl中的本地时间与UNIX时间戳间相互转换的方法

讲Perl中的本地时间与UNIX时间戳间相互转换的方法

2024年05月15日 Perl 我要评论
当你的perl脚本需要解决时间信息,这里有两种方法来表示和处理日期和时间。一种方法是易读的时间表示(例,"sat mar 14 10:14:05 edt 2015"),另外一种是使用unix时间戳(也

当你的perl脚本需要解决时间信息,这里有两种方法来表示和处理日期和时间。一种方法是易读的时间表示(例,"sat mar 14 10:14:05 edt 2015"),另外一种是使用unix时间戳(也叫“新纪元时间”),这是从1970年1月1日到今所经过的时间秒数。每一种方法都有它自己的优劣势,取决于你的需要,也许也就需要转换一种格式到另一种。
perl中转换本地时间到unix时间戳

为了从日期字符串中获得unix时间,可以使用date::parse模块中str2time()函数。此函数可以处理多种格式,例如:

  sat mar 14 10:14:05 edt 2015
  3/14/2015 10:14:05 -0400
  14/mar/15 10:14:05
  14 mar 15 10:14:05

  use date::parse;
  my $local_time = "sat mar 14 10:14:05 edt 2015";
  # 1426342445 will be stored in $unix_time
  my $unix_time = str2time($local_time);

date:parse 模块支持多种语言(英语,法语,德语和意大利语)和时区。例如:

  use date::parse;
  use date::language;
  my $lang = date::language->new('french');
  my $unix_time = $lang->str2time("12:14:05, ago 16, 2014 (cest)");

perl中unix时间戳到易读的日期和时间

如果你想要转换unix时间戳到易读的格式,可以使用localtime()函数,此函数可以转换unix时间戳为一个9元素列表。然后你可以使用返回的list构造任何你需要的可读格式。这里有一个代码片段:

  # $sec, $min, $hour: 秒,分,时
  # $mday: 月中的某天 (0-31)
  # $mon: 月份,范围 0 (一月) 至 11 (十二月)
  # $year: 年份,与1900年的差值(2015年为2015-1900=115)
  # $wday: 星期,范围 0 (星期天) 至 6 (星期六)
  # $yday: 年中的某天,范围 0 至 364 (或 365 闰年)
  # $isdst: 是否是夏令时
  my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($unix_timestamp);
  # necessary conversion of $mon and $year
  $mon += 1;
  $year += 1900;
  print "current time: $year-$mon-$mday $hour:$min:$sec\n";

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com