Foro de programacion

programacion
RegistrateNewsletter
zonas:adsl:area-flash:area-php:area-asp:area-vb:area-photoshop:area-Vfox:area-Soft:area.:Mas
+ de 45.000 registrados
Secciones: Manuales-Diseño-Trucos-Recursos-Foros/Comunidad-Software-CodigoFuente-compras
AñadenosFavoritos
Secciones: Herramientas-Libros-Webmasters/Google-Noticias -Biblioteca-Cursos--Directorio-EmpleoN
Foros de Programacion - Cominidad de Programadores
 
Foros de programacion
es una web de ayuda a los programadores y webmasters, la buena utilizacion del foro sera el premio que tendremos para q este elemento sea util para los usuarios.

Colaborar: Si deseais ser moderadores de alguno de los foros estaremos encantados en que nos presteis esa ayuda , tan solo es necesario tener algun conocimiento
del tema que trata el foro y tener ganas ganas de colaborar para ser moderador mandar un mail indicando de que foro deseais ser moderador

Deseais que pongamos algun nuevo foro de programacion? ¿quieres crear un nuevo foro y ser su moderador? ponte en contacto con nosotros

Retroceder   Foros > Programacion > visual basic

Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 30 de marzo,2005, 19:59
vero
Guest
 
Mensajes: n/a
Predeterminado AM/PM

Hola!!

Tengo un documento en txt que tiene el siguiente formato:
Código:
38330500,29ba47bb104923102751880e62eeda9d,4/1/2004 1:24:49 AM,4/1/2004 1:24:49 AM
36314924,d9ab3bbc7ef7614b5965b121532161e6,4/1/2004 1:27:45 AM,4/1/2004 1:34:09 AM
36519536,91d10a59ee2971f98d21be0b9b872a97,4/1/2004 1:28:25 AM,4/1/2004 1:33:18 PM
lo que necesito es transformar la hora AM/PM y que quede
Código:
38330500,29ba47bb104923102751880e62eeda9d,4/1/2004 1:24:49 AM,4/1/2004 1:24:49
36314924,d9ab3bbc7ef7614b5965b121532161e6,4/1/2004 1:27:45 AM,4/1/2004 1:34:09
36519536,91d10a59ee2971f98d21be0b9b872a97,4/1/2004 1:28:25 AM,4/1/2004 13:33:18
Recién supe que se puede hacer con perl pero no tengo idea como hacerlo... Son 5 millones de datos!!

Vero.
Responder Citando
  #2 (permalink)  
Antiguo 30 de marzo,2005, 20:00
Guest
 
Mensajes: n/a
Predeterminado Re: AM/PM

No se entiende muy bien lo que necesitas.
Es decir, vos querés pasar:
4/1/2004 1:24:49 AM ==> 4/1/2004 1:24:49
y
4/1/2004 1:24:49 PM ==> 4/1/2004 13:24:49

Es esto?
Responder Citando
  #3 (permalink)  
Antiguo 07 de agosto,2005, 20:05
explorer
Guest
 
Mensajes: n/a
Predeterminado AM/PM

Es muy sencillo, pero hay que tener en cuenta unos detalles:
  • Suponemos que las fechas están en formato anglosajón (mes/dia/año hora:minuto:segundo AM/PM)
    El archivo donde está el origen de los datos se llama archivo.txt
    El archivo resultado estará en un fichero llamado resultado.txt
    Las fechas y tiempos pueden tener ceros en las cifras menores de 9. Así, la una de la madrugada será las 01:00:00 y no las 1:0:0
    Sólo hay que cambiar la fecha que hay al final de la línea.
Entonces el código (uno de los posibles) es este:
Código:
#!/usr/bin/perl

use DateTime;
use Time::ParseDate;

# Para todas las líneas del fichero que pasamos como argumento del programa
# La línea quedará almacena en la variable por defecto $_
while ( <ARGV> )
{
    # Analizamos la línea y nos quedamos con la última parte
    # que es la que parece que vero quería cambiar
    ($tiempo) = $_ =~ /,([^,]+)$/;

    # Convertimos la fecha/hora en segundos desde el epoch
    $segundos = parsedate($tiempo);

    # Si ha fallado la conversión, esa línea es distinta de las demás.
    # Informamos al operador y seguimos con la siguiente
    unless ( defined $segundos )
    {
        print "ERROR: Linea distinta:\n$_\n";
        next;
    }

    # Creamos un objeto Fecha/Hora para que nos ayude en la conversión
    $dt = DateTime->from_epoch (
            epoch=>$segundos,
            time_zone=>"local"
    );

    # Creamos la nueva fecha, sin el AM/PM
    $nueva = $dt->strftime("%m/%d/%Y") . ' ' . $dt->hms;

    # Modificamos la línea con la nueva fecha
    $_ =~ s/,[^,]+$/,$nueva/;

    # Sacamos el resultado al exterior
    print "$_\n";
}
Y lo ejecutaríamos como:
Código:
programa.pl archivo.txt > resultado.txt
Quedaría editar el fichero resultado y ver si existen líneas etiquetadas como ERROR, por si acaso.
El resultado del programa sería:
archivo.txt
Código:
38330500,29ba47bb104923102751880e62eeda9d,4/1/2004 1:24:49 AM,4/1/2004 1:24:49 AM
36314924,d9ab3bbc7ef7614b5965b121532161e6,4/1/2004 1:27:45 AM,4/1/2004 1:34:09 AM
36519536,91d10a59ee2971f98d21be0b9b872a97,4/1/2004 1:28:25 AM,4/1/2004 1:33:18 PM
resultado.txt
Código:
38330500,29ba47bb104923102751880e62eeda9d,4/1/2004 1:24:49 AM,04/01/2004 01:24:49
36314924,d9ab3bbc7ef7614b5965b121532161e6,4/1/2004 1:27:45 AM,04/01/2004 01:34:09
36519536,91d10a59ee2971f98d21be0b9b872a97,4/1/2004 1:28:25 AM,04/01/2004 13:33:18
Responder Citando
  #4 (permalink)  
Antiguo 04 de septiembre,2005, 02:03
Junior Member
 
Fecha de Ingreso: sep 2005
Ubicación: Valladolid, España
Mensajes: 2
Predeterminado AM/PM en versiones de una línea

Esto es para cambiar sólo la última fecha de cada línea, como querías:
Código:
perl -pe 's/ (\d+)(:\d+:\d+) (A|P)M$/sprintf(" %d$2",($3 eq "P")?$1+12:$1)/e;' archivo.txt
En caso de que quieras cambiar las dos fechas de cada línea:
Código:
perl -pe 's/ (\d+)(:\d+:\d+) (A|P)M/sprintf(" %d$2",($3 eq "P")?$1+12:$1)/ge;' archivo.txt
Y en el caso de que además quieras poner los números de las horas con dos dígitos:
Código:
perl -pe 's/ (\d+)(:\d+:\d+) (A|P)M/sprintf(" %02d$2",($3 eq "P")?$1+12:$1)/ge;' archivo.txt
Responder Citando
Respuesta

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Las caritas están Activado
El codigo [IMG] está Activado
Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Activado
Ir al Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Re: ODBC en Visual Basic con Mysql visual basic 2 07 de agosto,2005 20:08
Re: ODBC en Visual Basic con Mysql qwerty visual basic 1 30 de marzo,2005 20:02
MySQL en Visual Basic con ADO bi23471 mysql 1 01 de enero,1970 04:50
MySQL en Visual Basic con ADO bi23471 visual basic 1 01 de enero,1970 04:21
Re: ODBC en Visual Basic con Mysql bi23471 visual basic 0 01 de enero,1970 01:00

Programacion : LWPI Solorecursos I programacion I abcdatos I TrucosTecnicos I servicios gratisI ofertas de ADSL Ipueblos20
Areas exclusivas:cursosIofertasIadslIwebtutoriales ISMSareaItutorialesItrucos de windows IgooglemaniaI programatium.netIcompras
noticias: SaludIOcio/cineIMusicaIMotorIDeportes IJuegos I FinanzasIMovilesIEnergiaIEcologiaITech-yIMujerIMACISaludIViajes-Pueblos
site programatium.com : site1 - site2 - site3 - site4 - site5 - site6 - site7 - site8
manuales Sugiere un manual para esta seccion
who's online
Linkanos
www.programatium.com© 1999 - web esta optimizada para Microsoft explorer 6.0
tutoriales

Content Relevant URLs by vBSEO 3.2.0