【问题标题】:How to identify a date for the row of each days?如何确定每一天的行的日期?
【发布时间】:2020-06-10 08:52:53
【问题描述】:

请看一下!

我有从 1 到 30 天的天数,所以我需要遍历天数并使用一个“for”循环为每个对应天确定一个日期,开始日期是:$epoc = 2020-05- 11;所以,我将它转换为 epoc 秒,我找到了以秒为单位的最后日期(第 30 天)。我能够像这样解决它,但我需要一个“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;

【问题讨论】:

  • timelocal 来自哪里?
  • 你的意思是一个模块?刚刚编辑
  • 请添加use strict; use warnings 以查看您的脚本有多少问题。在第 #6 行,您使用未初始化的 $epoc。您希望在变量中看到什么?
  • 感谢您的帮助,亲爱的@PolarBear。只是初始化了一些变量,并从我使用的批处理文件中获取了值,对不起,忘记在代码中提及

标签: arrays perl date days


【解决方案1】:

如果您使用可用的工具,您的生活会轻松很多。特别是,Time::PieceTime::Seconds 自 2007 年以来一直是标准 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;
}

【讨论】:

    【解决方案2】:

    也许你打算编写如下形式的代码

    #!/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;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      相关资源
      最近更新 更多