这是我到目前为止的脚本(这是一项正在进行的工作):
#!/usr/bin/perluse strict;use warnings;use Time::Local;use Time::localtime;use file::stat;my $sec = 0;my $min = 0;my $hour = 0;my $mday = 0;my $mon = 0;my $year = 0;my $wday = 0;my $yday = 0;my $isdst = 0;########################### Get the engine log date##########################my $date = `grep -m 1 'Metric' "$ARGV[0]" | awk '{print $2}'`;($year,$mon,$mday) = split('-',$date);$mon--;########################################## Calculate the start and end epoch time#########################################($hour,$min,$sec) = split(':',$ARGV[1]);my $startTime = timelocal($sec,$hour,$mday,$year);($hour,$ARGV[2]);my $endTime = timelocal($sec,$year);my $theTime = 0;for (my $i = $startTime; $i <= $endTime + 29; $i++) { #print "$startTime $i \n"; $theTime = localtime($i); #my $DBInstance0 = `grep "$hour:$min:$sec" "$ARGV[0]"`;# | grep 'DBInstance-0' | awk '{print $9}'`; #print "$DBInstance0\n"; print "$theTime\n";}print "$startTime $endTime \n";
输出如下:
Time::tm=ARRAY(0x8cbbd40)Time::tm=ARRAY(0x8cbc1a0)Time::tm=ARRAY(0x8cbbe80)Time::tm=ARRAY(0x8cbc190)Time::tm=ARRAY(0x8bbb170)Time::tm=ARRAY(0x8cbc180)Time::tm=ARRAY(0x8cbbf30)Time::tm=ARRAY(0x8cbc170)Time::tm=ARRAY(0x8cbc210)Time::tm=ARRAY(0x8cbc160)1275760356 1275760773
我只能访问核心Perl模块,无法安装任何其他模块.
解决方法 您可以使用ctime,具体取决于您对“正常时间”的定义:示例代码:
use Time::Local; use Time::localtime; my $time=timelocal(1,2,3,24,6,2010);print "$time\n"; $theTime = ctime($time); print "$theTime\n";
结果:
1279954921Sat Jul 24 03:02:01 2010
此外,您不需要使用Time :: Localtime(which is why you get Time::tm而不是Perl内部本地时间的标准数组/字符串):
use Time::Local; my $time=timelocal(1,2010); print "$time\n"; $theTime = localtime($time); print "$theTime\n";1279954921Sat Jul 24 03:02:01 2010总结
以上是内存溢出为你收集整理的如何在Perl中将纪元时间转换为正常时间?全部内容,希望文章能够帮你解决如何在Perl中将纪元时间转换为正常时间?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)