気象では、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)