请看一看!
我有从1到30天的天数,所以我需要循环通过天数,并使用一个" for“循环确定每个对应日期的日期,开始日期是:$epoc = 2020-05-11;所以,我正在将其转换为epoc秒,我发现最后一个日期(第30天).I能够像这样解决它,但我需要一个"for”循环。有可能吗?
#!/usr/bin/perl
use Time::Local;
use Time::Localtime;
$day_a1 = 1;
$day_a2 = 30;
my ($year, $month, $day) = split('-', $epoc);
$epoc = timelocal($s, $m, $h, $day, $month-1, $year-1900);
$interval=$day_a2*60*60*24;
$epoc1=$epoc+$interval;
print scalar(localtime($epoc1)), "\n";
@x1=();
@date1=();
for ($d = $day_a1; $d <= $day_a2; $d++){
push (@x1, $d);
}
for ($d = $epoc; $d <= $epoc1; $d+=86400){
print scalar(localtime($d));
push (@date1, $d);
}
print @x1;
print @date1;发布于 2020-06-10 18:47:59
如果你使用了可用的工具,你的生活就会变得容易得多。特别是,自2007年以来,Time::Piece和Time::Seconds一直是标准Perl发行版的一部分。
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use Time::Piece;
use Time::Seconds;
my $start = '2020-05-11';
# Add time of midday to avoid DST problems.
my $curr = Time::Piece->strptime("$start 12:00:00", '%Y-%m-%d %H:%M:%S');
for (1 .. 30) {
say $curr->strftime('%Y-%m-%d');
$curr += ONE_DAY;
}发布于 2020-06-10 18:10:02
也许您打算以下面的形式编写代码
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use Time::Local;
use Time::Localtime;
my $days = 30;
my $date = '2020-05-11';
my $day_sec = 60*60*24;
my ($year, $month, $day) = split('-', $date);
my $epoch = timelocal(0, 0, 0, $day, $month-1, $year-1900);
for(my $day=0; $day<$days; $day++) {
say scalar localtime($epoch);
$epoch += $day_sec;
}https://stackoverflow.com/questions/62299520
复制相似问题