我已经使用以下代码从服务器获取日期并以yy / mm / dd-hh / mm / ss格式显示。
#!/usr/bin/perl
system(`date '+ %Y/%m/%d-%H:%M:%S' >ex.txt`);
open(MYINPUTFILE, "/tmp/ranjan/ex.txt");
while(<MYINPUTFILE>)
{
chomp;
print "$_\n";
}
close(MYINPUTFILE);
输出:
2013/07/29-18:58:04
我想添加两分钟的时间,需要更换文件中的时间,请给我一些想法。
答案 0 :(得分:3)
更改日期命令以添加2分钟:
date --date "+2 min" '+ %Y/%m/%d-%H:%M:%S'
或Perl版本:
use POSIX;
print strftime("%Y/%m/%d-%H:%M:%S", localtime(time + 120));
答案 1 :(得分:3)
最好使用Time::Piece
来解析和格式化日期。它是一个内置模块,不需要安装。
异常,在这种情况下,替换日期/时间字符串与从文件读取的原始字符串的长度完全相同,因此可以就地进行修改。通常,文件的总长度会发生变化,因此需要创建新文件并删除旧文件,或者将整个文件读入内存并再次写出来。
此程序打开文件以进行同时读/写,从文件中读取第一行,使用Time::Piece
解析它,添加两分钟(120秒),再次搜索文件的开头,然后打印重新格式化的新日期/时间与原始日期/时间重新格式化为文件。
use strict;
use warnings;
use autodie;
use Time::Piece;
my $format = '%Y/%m/%d-%H:%M:%S';
open my $fh, '+<', 'ex.txt';
my $date_time = <$fh>;
chomp $date_time;
$date_time = Time::Piece->strptime($date_time, $format);
$date_time += 60 * 2;
seek $fh, 0, 0;
print $fh $date_time->strftime($format);
close $fh;
<强>输出强>
2013/07/29-19:00:04