Lavoro

Ho cominciato a lavorare! Lavoro per la [Develer](http://www.develer.com/), azienda di sviluppo software e non solo, credo di aver capito specializzata nel non specializzarsi.

Sono stato assegnato ad un progetto interno un po’ noioso che consiste nell’adattare [Achievo](http://www.achievo.org/) per consentire la visione delle statistiche delle ore lavorate anche ai clienti, limitando l’accesso ai soli progetti a cui i clienti sono interessati.

Nel farlo ho notato che Achievo è un po’ limitato nell’interfaccia di gestione delle ore lavorate, prevede l’inserimento di un giorno e di un numero di ore.

Lavorando con orari liberi in Develer, il totale ore è spesso la somma di strani intervalli, tipo *10:30-12:30 + 13:50-19:20*

E qua Python viene in aiuto fornendo gli strumenti per creare un banale parser:

import datetime, time

def parse_hhmm(val):
    return datetime.datetime(*time.strptime(val, "%H:%M")[:-2])

def parse_hinterval(val):
    val1, val2 = val.split("-")
    d1 = parse_hhmm(val1)
    d2 = parse_hhmm(val2)
    if d2 < d1:
        d2 += datetime.timedelta(1)
    return d2 - d1

def parse_wtime(val):
    vals = val.replace(" ","").split("+")
    res = datetime.timedelta(0)
    for ival in vals:
        if "-" in ival:
            res += parse_hinterval(ival)
        else:
            res += parse_hinterval("00:00-%s" % ival)
    return res

if __name__=="__main__":
    print parse_wtime("10:06-13:06 + 14:16-17:47 + 18:08-20:33")
    print parse_wtime("9:47-13:08 + 14:08-19:00")
[/code]

Che eseguito restituisce:

[code lang="python"]
>>> 
8:56:00
8:13:00
>>> 

Un po’ di documentazione: 6.10.2 timedelta Objects.