我正在尝试将人类可读格式的常规Unix日期转换回unix时间戳,而不会为一周的几个月和几天制作数组。
显然,“%”需要在perl中进行转义
我尝试了“%%”和“\%”以及RTM,这就是我最终得到的结果\ %%
$myDate="Wed Sep 15 14:21:36 2010";
$datePattern="\%%a \%%b \%%e \%%H:\%%i:\%%s \%%Y";
MySQL有一个功能
UNIX_TIMESTAMP (STR_TO_DATE (\'$myDate\' \, \'$datePattern\'))";
我的最后陈述如下: 该命令直接来自mySQL,但是当我从perl调用它时没有。
replace mytable values ('some value', UNIX_TIMESTAMP (STR_TO_DATE (\'$myDate\' \, \'$datePattern\')))";
答案 0 :(得分:1)
use strict;
use warnings;
BEGIN {
$Date::Manip::Backend = 'DM5';
}
use Date::Manip;
my $myDate = "Wed Sep 15 14:21:36 2010";
print Date::Manip::UnixDate( $myDate, '%Y-%m-%d %H:%M:%S' );
这是我在DateTime的尝试。一个使用mysql DateTime模块,另一个没有。
use strict;
use warnings;
use DateTime::Format::Strptime;
use DateTime::Format::MySQL;
my $myDate = "Wed Sep 15 14:21:36 2010";
my $Strp = new DateTime::Format::Strptime( pattern => '%a %b %e %H:%M:%S %Y', );
my $dt = $Strp->parse_datetime($myDate);
print $dt->strftime('%Y-%m-%d %H:%M:%S') . "\n";
print DateTime::Format::MySQL->format_datetime($dt) . "\n";
答案 1 :(得分:1)
另一种选择可能是使用Time :: Piece
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
my $mydate = "Wed Sep 15 14:21:36 2010";
my $mytime = Time::Piece->strptime($mydate, "%a %b %e %H:%M:%S %Y");
print $mytime->strftime("%Y-%m-%d %H:%M:%S\n");
答案 2 :(得分:0)
一种选择是使用Date::Parse:
use strict;
use warnings;
use Date::Parse;
my $date = "Wed Sep 15 14:21:36 2010";
my $time = str2time($date);
从那里,您可以发出更新数据库记录的查询以使用$time
。