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:
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")
Che eseguito restituisce:
8:56:00
8:13:00
>>>
Un po’ di documentazione: 6.10.2 timedelta Objects.