Pagina 1 di 1
[Risolto] [Python] Operazioni su data
Inviato: martedì 8 gennaio 2019, 19:35
da vaeVictis
Ciao a tutti.
Ho una stringa che rappresenta una data e un'ora, come nell'esempio:
Devo effettuare due operazioni su questa data:
1) aggiungere un'ora (tenendo in considerazione anche l'eventuale modifica al giorno)
2) calcolare la differenza rispetto un'altra data (non so in che termini sia possibile, se in secondi o cosa).
Attendo che qualcuno mi illumini di immenso.
Grazie in anticipo
Re: [Python] Operazioni su data
Inviato: martedì 8 gennaio 2019, 20:05
da nuzzopippo
Per una volta, posso darTi una risposta : il modulo datetime ... guarda
questo post, credo Ti sarà sufficiente
[Edit] dato che c'ero mi son rinfrescato la memoria ... una cosa del genere ti servirebbe?
Codice: Seleziona tutto
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
>>> import datetime
>>> def aggiusta_data(txt):
lst = txt.split('-')
data = datetime.date(int(lst[0]),
int(lst[1]),
int(lst[2])
)
lst = lst[3].split(':')
ora = datetime.time(int(lst[0]), int(lst[1]))
data_compl = datetime.datetime.combine(data, ora) + datetime.timedelta(hours=1)
return data_compl
>>> data1 = aggiusta_data('2019-1-10-07:45')
>>> print(data1)
2019-01-10 08:45:00
>>> data2 = aggiusta_data('2019-1-12-08:45')
>>> print(data2)
2019-01-12 09:45:00
>>> print(data2 - data1)
2 days, 1:00:00
>>> print(data1 - data2)
-3 days, 23:00:00
>>>
>>> data2 > data1
True
>>> data1 > data2
False
>>>
da notare il valore negativo, è stato un assurdo test che mi è venuto in mente ... non mi convince il risultato
Re: [Python] Operazioni su data
Inviato: martedì 8 gennaio 2019, 21:48
da melfnt
Qui rispondono tutti così (compreso me medesimo).
Re: [Python] Operazioni su data
Inviato: mercoledì 9 gennaio 2019, 6:25
da nuzzopippo
Plagio involontario @melfnt, riferivo ad un altro, recente, post cui ho risposto senza avere idea di cosa si parlava
Re: [Python] Operazioni su data
Inviato: mercoledì 9 gennaio 2019, 7:29
da vaeVictis
datetime non ero mai riuscito a usarlo prima d'ora. che era la prima volta che provo a usarlo, tra l'altro.
Grazie per l'indicazione con il codice.
.. ma se volessi convertire la stringa che rappresenta la data con ora direttamente in un oggetto di tipo datetime.date?
Non si può fare in un passaggio solo?
p.s.:
darTi
non esageriaMo
edit:
.. ma se volessi convertire la stringa che rappresenta la data con ora direttamente in un oggetto di tipo datetime.date?
Non si può fare in un passaggio solo?
Sì, c'è
Codice: Seleziona tutto
>>> foo = '2019-1-11 08:00'
>>> datetime.datetime.strptime(foo, '%Y-%m-%d %H:%M')
datetime.datetime(2019, 1, 11, 8, 0)
Re: [Python] Operazioni su data
Inviato: mercoledì 9 gennaio 2019, 14:02
da nuzzopippo
... ecco come funziona! Non mi riusciva di utilizzarla, help striminzito
Codice: Seleziona tutto
| strptime(...) from builtins.type
| string, format -> new datetime parsed from a string (like time.strptime()).
e docs in inglese ... tutta la "funzione", quindi, si riduce a :
Codice: Seleziona tutto
>>> data = datetime.datetime.strptime('2019-1-10-07:45', '%Y-%m-%d-%H:%M') + datetime.timedelta(hours=1)
>>> print(data)
2019-01-10 08:45:00
>>>
... a volte, ci si gira attorno e poi basta vederlo
Re: [Python] Operazioni su data
Inviato: giovedì 10 gennaio 2019, 16:40
da vaeVictis
nuzzopippo ha scritto:Non mi riusciva di utilizzarla, help striminzito
Concordo e anche io ci ho messo un po' a capire.
Grazie per l'aiuto. Problema risolto