Code :
#!/usr/bin/perl use strict; use warnings; sub printDate { # (day, month, year) day: 1..31 month: 0..11 year: 0 is 1900 printf("%02s-%02s-%02s\n", $_[2]+1900, $_[1]+1, $_[0]); } sub lastday { # (month, year) day: 1..31 month: 0..11 year: 0 is 1900 my @nbdays = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); # unless février d'une année bissextile on retourne le valeur de nbdays return $nbdays[$_[0]] unless (($_[0] == 1) and (0 == $_[1] % 4) and ((0 != $_[1] % 100) or (0 == (1900 + $_[1]) % 400))); } # ce jour printDate($mday, $mon, $year); # premier et dernier jour printDate(1, $mon, $year); printDate(lastday($mon, $year), $mon, $year); # recul d'un mois if ($mon == 0) { --$year; $mon = 11; } else { --$mon; } # premier et dernier jour printDate(1, $mon, $year); printDate(lastday($mon, $year), $mon, $year);
|