例如:从日期开始:10/02/2010
如何在Perl
中转换10/02/2010 00:00:00
的相等时间戳
我无法使用当地的时间或时间..有没有其他方法来实现这一点..
答案 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"
答案 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”)
然后,您可以获取该输出并将其转换为您希望的任何格式。