+ -
当前位置:首页 → 问答吧 → perl时间格式转换

perl时间格式转换

时间:2010-09-29

来源:互联网

请问perl怎么把‘Tue Sep 28 18:40:19 2010’ 转换成unix时间戳1285670419?

作者: leoxqing   发布时间: 2010-09-29

你看一下Date::Manip模块··好像可以的

作者: wfnh   发布时间: 2010-09-29

本帖最后由 黑色阳光_cu 于 2010-09-29 15:01 编辑
  1. sub convert_time
  2. {
  3.         require Time::Local;

  4.         my ($time_str) = @_;
  5.         my $time;

  6.         my $convert_month = sub
  7.         {
  8.                 my %months =
  9.                 (
  10.                         Jan => 0,
  11.                         Feb => 1,
  12.                         Mar => 2,
  13.                         Apr => 3,
  14.                         May => 4,
  15.                         Jun => 5,
  16.                         Jul => 6,
  17.                         Aug => 7,
  18.                         Sep => 8,
  19.                         Oct => 9,
  20.                         Nov => 10,
  21.                         Dec => 11
  22.                 );

  23.                 return $months{$_[0]};
  24.         };

  25.         if ($time_str =~ /^\w+\s+(\w+)\s+(\d+)\s+(\d+):(\d+):(\d+)\s+(\d+)$/)
  26.         {
  27.                 my ($month, $day, $h, $m, $s, $year) = ($convert_month->($1), $2, $3, $4, $5, $6);
  28.                 if (defined $month)
  29.                 {
  30.                         $time = Time::Local::timelocal($s, $m, $h, $day, $month, $year);
  31.                 }
  32.         }

  33.         return $time;
  34. }

  35. die convert_time("Tue Sep 28 18:40:19 2010");
复制代码

作者: 黑色阳光_cu   发布时间: 2010-09-29

利用
use HTTP:ate;
my $str="Tue Sep 28 18:40:19 2010";
my $time=HTTP:ate::str2time($str,'+0000'); #此处要附加'+0000'
print "$time\n";
结果
1285699219

作者: magnet2008   发布时间: 2010-09-29

改成+0800就是你的结果,这是时区的问题吧。
1285670419

作者: magnet2008   发布时间: 2010-09-29

热门下载

更多