1月1日からの日数を計算する

気象では、day of the year という1月1日から日数を使うのでこれを計算するスクリプトを示す。
なお、day of the yearでは、1月1日=1, 1月2日=2,.. と数える。
Perlには、localtimeという便利な関数があるのでこれを活用する。

#!/usr/bin/perl
use strict;
use warnings;
use Time::Local;

my $year = '2006';
my $month = '07';
my @days = (1 .. 31);
my @hours = '0';
my $min = '0';
my $sec = '0';

foreach my $day (@days) {
  my $time_nec = timelocal($sec,$min,$hour,$day,$month -1,$year);
  my $time_ref = timelocal(0,0,0,1,0,$year);
  my $doy = int((${time_nec}-${time_ref})/86400)+1;
  $doy = sprintf("%03d",$doy);
  print "$doy\n";
}
close(FILE)
最終更新:2012年05月01日 14:22