如何在Perl中将本地时间转换为unix时间戳?

时间:2010-02-10 14:47:31

标签: perl unix

例如:从日期开始:10/02/2010

如何在Perl

中转换10/02/2010 00:00:00的相等时间戳

我无法使用当地的时间或时间..有没有其他方法来实现这一点..

6 个答案:

答案 0 :(得分:10)

您可以使用Time::Local核心模块:

use Time::Local 'timelocal';
my ($d, $m, $y) = split '/', '10/02/2010';
my $time = timelocal(0, 0, 0, $d, $m-1, $y);

请注意timelocal()的月份参数位于0..11

范围内

答案 1 :(得分:7)

没有localtime():

use Time::Local;    
$time = timelocal($sec,$min,$hour,$mday,$mon,$year);

(见perldoc)

标准方式如下:

use POSIX;

use strict;
use warnings;

my $sec  = 0;
my $min  = 0;
my $hour = 0;
my $day  = 10;
my $mon  = 2 - 1;
my $year = 2010 - 1900;
my $wday = 0;
my $yday = 0;

my $unixtime = mktime ($sec, $min, $hour, $day, $mon, $year, $wday, $yday);
print "$unixtime\n";

my $readable_time = localtime($unixtime);
print "$readable_time\n"

(来自http://www.adp-gmbh.ch/perl/posix/convert_time.html

答案 2 :(得分:5)

您可以使用Date::Parse

use Date::Parse;
print str2time('10/02/2010 00:00:00');

在我的机器上打印1285970400,corresponds到2010年10月2日(我的+1格林尼治标准时间为+1冬季。)

答案 3 :(得分:3)

我认为您需要内置模块Time::Local

答案 4 :(得分:2)

DateTime模块在​​这里应该会有所帮助。特别是,我相信DateTime::Format::Natural模块可以解析用户提供的日期字符串。从那里,您有一个DateTime对象,可以打印出来或根据需要进行转换。

答案 5 :(得分:1)

根据您的初始日期来源,您可以使用

解析它
  

日期:: MANIP

并致电

  

ParseDate( “10/02/2010”)

然后,您可以获取该输出并将其转换为您希望的任何格式。