Onion's Crunch

Blog dedicado a la administracion bajo linux y a la programacion 2RDP, es decir como van llegando los requerimientos, resolver sin derecho a pataleo..... Tambien algunos tips para los perlceros, phpceros, javaceros, mysqlceros, postgresceros, apacheceros, entre otros....

martes, febrero 22, 2005

Programacion Perl: Funciones de Fecha

Como no me quede tranquilo en ver como se trabajaba con las funciones de fecha en bash me tome la libertad de hacer lo propio en perl. Aca esta un ejemplo que muestra los dias del mes y el dia siguiente empleando algunas rutinas definidas en la libreria Date::Calc, POSIX y Time::Local.

  1. #!/usr/bin/perl -w
  2. use strict;
  3. use Date::Calc qw(Add_Delta_Days);
  4. use Date::Calc qw(Add_Delta_YMDHMS);
  5. use POSIX qw(strftime);
  6. use Time::Local;
  7. my ($oyear, $omonth, $oday,$ohour,$omin,$osec) = (2005,01,01,0,0,0);
  8. my ($D_y,$D_m,$D_d, $Dh,$Dm,$Ds) = (0,0,1,0,0,0);
  9. my ($year,$month,$day, $hour,$min,$sec) = ($oyear, $omonth, $oday,$ohour,$omin,$osec);
  10. while ($omonth == $month){
  11. ($oyear, $omonth, $oday,$ohour,$omin,$osec) = ($year,$month,$day, $hour,$min,$sec);
  12. ($year,$month,$day, $hour,$min,$sec) = Add_Delta_YMDHMS($oyear,$omonth,$oday, $ohour, $omin, $osec, $D_y,$D_m,$D_d, $Dh,$Dm,$Ds);
  13. my $ctime = timelocal(0, 0, 0, $oday, $omonth-1, $oyear);
  14. my $ntime = timelocal(0, 0, 0, $day, $month-1, $year);
  15. my $cdate = POSIX::strftime( "%Y-%m-%d", localtime($ctime));
  16. my $ndate = POSIX::strftime( "%Y-%m-%d", localtime($ntime));
  17. print "$cdate,$ndate\n";
  18. }

El resultado por consola es algo como esto:
2005-01-01,2005-01-02
2005-01-02,2005-01-03
2005-01-03,2005-01-04
2005-01-04,2005-01-05
2005-01-05,2005-01-06
2005-01-06,2005-01-07
2005-01-07,2005-01-08
2005-01-08,2005-01-09
2005-01-09,2005-01-10
2005-01-10,2005-01-11
2005-01-11,2005-01-12
2005-01-12,2005-01-13
2005-01-13,2005-01-14
2005-01-14,2005-01-15
2005-01-15,2005-01-16
2005-01-16,2005-01-17
2005-01-17,2005-01-18
2005-01-18,2005-01-19
2005-01-19,2005-01-20
2005-01-20,2005-01-21
2005-01-21,2005-01-22
2005-01-22,2005-01-23
2005-01-23,2005-01-24
2005-01-24,2005-01-25
2005-01-25,2005-01-26
2005-01-26,2005-01-27
2005-01-27,2005-01-28
2005-01-28,2005-01-29
2005-01-29,2005-01-30
2005-01-30,2005-01-31
2005-01-31,2005-02-01

Espero sirva de algo para todo los perl ceros!!!