• Publicidad

Recorrer días del mes actual

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Recorrer días del mes actual

Notapor scout » 2009-12-04 10:40 @486

Gente, paso un código que me gustaría saber si se puede optimizar... y compartir de paso la idea: es realizar un bucle sobre todos los días del mes en curso... para luego realizar un query sobre cada día.

Como buen scout, seguramente sobrarán partes, pero bueno funciona así de cutre, el pobre; me gustaría ver otras opciones...

Debajo copio el resultado...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use Date::Calc qw(Add_Delta_Days);
  3. use Date::Calc qw(Add_Delta_YMD);
  4. use POSIX qw(strftime);
  5. use Time::Local;
  6. use POSIX qw/ strftime /;
  7. use DateTime;
  8. use DateTime::Format::Strptime;
  9. my $Strp = new DateTime::Format::Strptime(pattern=>'%Y-%m-%d');
  10. my $dt_hoy = DateTime->now();
  11. print " La fecha de hoy es $dt_hoy  \n" ;
  12. print " \n" ;
  13. my $cadena = $dt_hoy;
  14. my $fecha = substr $cadena, 0, 10;
  15. my @fecha = split '-', $fecha;
  16. my $fecha_nueva2  =$fecha[0]. $fecha[1]. $fecha[2];
  17. print    "\n";
  18. $fecha[2] = 01;
  19. my ($oyear, $omonth, $oday) = ( $fecha[0], $fecha[1], $fecha[2]);
  20.  #variables para sumar un dia
  21. my ($D_y,$D_m,$D_d) = (0,0,1);
  22. #variables para comparar el mes
  23. my ($year,$month,$day) = ($oyear, $omonth, $oday);
  24.  
  25. # mientras el mes siga siendo el mismo...
  26. while ($omonth == $month){
  27.     ($oyear, $omonth, $oday) = ($year,$month,$day);
  28.     if (  $month <  $fecha[2]   ) {
  29.         next;
  30.     }
  31.     print "$year,$month,$day \n";
  32.     #agrego un dia a la fecha
  33.     ($year,$month,$day) = Add_Delta_YMD($oyear,$omonth,$oday, $D_y,$D_m,$D_d);
  34.  
  35.     #cierre de while
  36. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
C:\Perl>perl  c:\perl\buclefechasreducido.pl
 La fecha de hoy es 2009-12-04T15:33:10


2009,12,1
2009,12,2
2009,12,3
2009,12,4
2009,12,5
2009,12,6
2009,12,7
2009,12,8
2009,12,9
2009,12,10
2009,12,11
2009,12,12
2009,12,13
2009,12,14
2009,12,15
2009,12,16
2009,12,17
2009,12,18
2009,12,19
2009,12,20
2009,12,21
2009,12,22
2009,12,23
2009,12,24
2009,12,25
2009,12,26
2009,12,27
2009,12,28
2009,12,29
2009,12,30
2009,12,31
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2009-12-04 11:12 @508, editado 3 veces en total
Razón: Ortografía, bloques de código, anglicismos
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Publicidad

Re: Recorrer días del mes actual

Notapor explorer » 2009-12-04 11:10 @507

Pues sí... sobran todos los módulos excepto uno.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. use DateTime;
  7.  
  8. my $fecha = DateTime->now();               # Hoy mismo
  9.  
  10. print "Fecha de hoy: $fecha\n";
  11.  
  12. my $mes_actual = $fecha->month();          # En qué mes estamos
  13.  
  14. $fecha->set( day => 1 );                   # Nos ponemos en el primer día
  15.  
  16. while ($fecha->month() == $mes_actual) {   # Mientras el mes siga siendo el mismo
  17.  
  18.     print $fecha->ymd(','), "\n";          # Pintamos la fecha
  19.  
  20.     $fecha->add( days => 1 );              # Y pasamos al día siguiente
  21. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
explorer@casa:~/Documents/Desarrollo> ./kk.pl
Fecha de hoy: 2009-12-04T16:07:28
2009,12,01
2009,12,02
2009,12,03
2009,12,04
2009,12,05
2009,12,06
2009,12,07
2009,12,08
2009,12,09
2009,12,10
2009,12,11
2009,12,12
2009,12,13
2009,12,14
2009,12,15
2009,12,16
2009,12,17
2009,12,18
2009,12,19
2009,12,20
2009,12,21
2009,12,22
2009,12,23
2009,12,24
2009,12,25
2009,12,26
2009,12,27
2009,12,28
2009,12,29
2009,12,30
2009,12,31
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados