Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    convertire stringa a timestamp

    Salve,

    ho una stringa che rappresenta l'ora corrente in formato tipo:
    "6:32pm" vorrei riportarlo in formato timestamp così posso po
    aggiungere/togliere un ora (+3600 secs)

    ho visto vari moduli cpan ma parsano solo le date e il time ma non da queto
    formato...

    grazie

  2. #2
    Ho provato con il modulo Date::Manip

    codice:
    use Date::Manip;
    Date_Init("TZ=CEST");
    print scalar localtime( UnixDate("4:30pm","%s") + ( 3600 * 5 ) );
    Ora peò avrei bisogno di ritornare nella forma HH:MMpm/am

    grazie

  3. #3
    Ho risolto così:

    codice:
    Date_Init("TZ=CEST");
    
    my ($min,$hr) = ( localtime( UnixDate("5:30pm","%s") ) )[1..2];
    
    my $ampm = "am"; 
    if ($hr == 12) { $ampm = "pm" } 
    if ($hr == 0) { $hr = 12 }
    if ($hr > 12)
    {
       $ampm = 'pm';
       $hr = ($hr - 12);
    } 
    
    print "$hr:$min$ampm\n";

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Dal punto di vista logico, si puo` migliorare.
    codice:
    my ($min,$hr) = ( localtime( UnixDate("5:30pm","%s") ) )[1..2];
    
    my $ampm = ($hr >= 12) ? "am" : "pm"; 
    $hr -= 12 if ($hr > 12); 
    if ($hr == 0) $hr = 12;
    
    print "$hr:$min$ampm\n";
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    grazie ma ho un problema...dovrei aggiungere gli zeri quando necessario...ad esempio:

    01:05pm invece ora mi dice: 1:5pm

    grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Una cosa cosi`?
    codice:
    my ($min,$hr) = ( localtime( UnixDate("5:30pm","%s") ) )[1..2];
    
    my $ampm = ($hr >= 12) ? "am" : "pm";
    $hr -= 12 if ($hr > 12); 
    if ($hr == 0) $hr = 12;
    
    printf "%2d:%2d$s\n", $hr,$min,$ampm";
    Oppure devi scrivere il tutto in una stringa. Eventualmetne ci risentiamo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    più che altro devo ritornare da una sub

  8. #8
    mi da errore con $s

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da gianvituzzi
    mi da errore con $s
    E c'ha pure ragione ...
    Ho scritto $ al posto di %.

    Ma se quella e` una sub, devi usare sprintf e ritornare la stringa.

    Con le indicazioni date e con il man sottomano (devi usare man perlfunc), dovresti riuscire a risolvere.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    esatto,

    codice:
    return sprintf("%02d:%02d", $hr,$min) . $ampm;
    grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.