Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    389

    operazioni con strniga di testo

    Ciao a tutti,
    ho per le mani uno script PERL al quale passano, in una stringa di testo, delle durate nel formato hh:mm:ss:ff
    con i quali devo fare dei calcoli: esempio sommare 2 di queste stringhe


    vorrei convertire la stringa in unixtime fare i calcoli e riconvertirla ma,....come si fa?

    ovviamente devo anche reinserire i : tra i valori

    come faccio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Per spezzare ci sono due metodi molto semplici:
    1: con il metodo split:
    codice:
    $origstr = "12:34:56:ff";
    @divisi = split(/\:/,$origstr);
    #a questo punto divisi e` un vettore di 4 componenti che contengono i pezzi separati
    print 'ore',$divisi[0],"\n";     # 12
    print 'min',$divisi[1],"\n";     # 34
    print 'sec',$divisi[2],"\n";     # 56
    print 'ff',$divisi[3],"\n";     # ff
    2: con le RE:
    codice:
    $origstr = "12:34:56:ff";
    $origstr ~= /(?(\d)[\:\.]{1}?)+/;
    #a questo punto in $1, $2, ... hai i pezzi separati
    print 'ore',$1,"\n";     # 12
    print 'min',$2,"\n";     # 34
    print 'sec',$3,"\n";     # 56
    print 'ff',$4,"\n";     # ff
    A questo punto devi trasformare la stringa in tempo; se ti serve solo un conto di ore, forse ti basta trasformare tutto in secondi, e poi usare quelli:
    $seconds = ($hh * 60 + $mm) * 60 + $ss;
    Se invece vuoi usare anche giorno, mese, anno ti conviene vedere se hai qualche modulo installato ed usare i metodi di quello.

    Alla fine se hai usato i secondi, ti basta usare l'operatore modulo (%) e la divisione intera (o il metodo int() ) per estrarre (nell'ordine) i secondi, i minuti e le ore.
    Se invece hai usato anche giorno, mese, anno per ritornare alla stringa del tempo, devi usare gmtime() o localtime() (a seconda che vuoi il tempo universale o quello della tua timezone):
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime($tuotempo);
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Puoi anche vedere i moduli elle famiglia "Date" che trovi su http://search.cpan.org
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.