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

joe*_*joe 1 unix perl

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

如何10/02/2010 00:00:00在Perl中转换相等的时间戳

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

Eug*_*ash 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);
Run Code Online (Sandbox Code Playgroud)

请注意,月份参数timelocal()是在范围内0..11.


mre*_*mre 7

没有localtime():

use Time::Local;
$time = timelocal($sec, $min, $hour, $mday, $mon, $year);
Run Code Online (Sandbox Code Playgroud)

(见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"
Run Code Online (Sandbox Code Playgroud)

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


And*_*mar 5

您可以使用Date :: Parse

use Date::Parse;
print str2time('10/02/2010 00:00:00');
Run Code Online (Sandbox Code Playgroud)

在我的机器上打印的是1285970400, 2010年10月2日相对应(我住在+1 GMT,+ 1 Wintertime)。