【发布时间】:2018-12-31 03:31:46
【问题描述】:
我的 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)
【问题讨论】:
-
您运行的是哪个版本的 Perl?运行
perl -v并告诉我们。通常 Perl 保存模块的目录不止一个。检查您是否安装了某些东西(以及什么版本)的最佳方法是运行perl -MTime::Piece\ 999(带有反斜杠\和一个空格)。它会告诉你你有什么版本,或者说你没有。 -
另外,请告诉我们您实际上想要做什么。为什么要一起使用它们?你想达到什么目标?
-
我使用的是5.8.2版本。
-
我一起使用的原因是我没有任何新的时间模块(或)日期模块,我想使用 Time::Piece 但不能因为我没有有它。我正在尝试将字符串转换为时间(我也没有 POSIX::qw )。所以最后没有其他选项了,我必须使用 timelocal 函数来满足我的需要(Time::Local),我还需要 tm 结构将格式化的输出打印到文件中(Time::Local)。我需要本地时间才能获得所需的函数时间。我正在放置开始和结束,然后计算时间。
-
没有 POSIX::qw。如果您执行
use POSIX qw(foo bar),则意味着它会从 POSIX 模块导入函数foo和bar。在 Perl 5.8.2 中包含 POSIX。见here