我的Perl安装中没有任何高级日期或时间实用程序。我只有Time::Local
,Time::gmtime
,Time::localtime
和Time::tm
。
use Time::Local;
#use Time::localtime;
#$datestring = localtime('2018/07/17-21:18:15','%Y/%m/%d-%H:%M:%S');
my $str = '2018/07/17-21:18:15';
my ($date, $time) = split /-/, $str;
my ($year, $mon, $day) = split /\//, $date;
my ($hour, $min, $sec) = split /:/, $time;
--$mon;
my $time = timelocal($sec, $min, $hour, $day, $mon, $year);
my $time2 = localtime;
my $time3 = localtime;
print "time is $time, $time2, $time3\n";
执行上述操作后,我得到
time is 1531880295, Mon Jul 23
10:50:54 2018, Mon Jul 23 10:50:54 2018
取消第二行注释后,我得到以下内容(使用`tm 结构)
time is 1531880295, Time::tm=ARRAY(0x40036a40),
Time::tm=ARRAY(0x40036ab8)
我想同时使用这两种功能
time is 1531880295, Mon Jul 23 10:50:54 2018,
Time::tm=ARRAY(0x40036ab8)
答案 0 :(得分:3)
当您尝试确定Perl模块的工作方式时,阅读文档始终是一个好主意。您正在使用的两个模块的文档位于Time::Local和Time::localtime。 Time :: localtime的文档包括以下行:
ctime()函数提供了一种获取原始CORE :: localtime()函数的标量意义的方法。
因此您可以通过将代码更改为以下方式来获得所需的行为:
my $time = timelocal($sec, $min, $hour, $day, $mon, $year);
my $time2 = ctime;
my $time3 = localtime;
print "time is $time, $time2, $time3\n";
但是,正如simbabque在他的评论中所说,这似乎是一件很奇怪的事情,如果您解释了您要实现的目标,我们几乎可以肯定地向您展示了一种更好的方法。