Topic: Gestione delle date  (Letto 98 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline carusantonio

  • python unicellularis
  • *
  • Post: 4
  • Punti reputazione: 0
    • Mostra profilo
Gestione delle date
« il: Febbraio 09, 2021, 09:23 »
Buongiorno

Ho cominciato da poco con Python e per fare un po' di pratica sto prendendo a modello il foglio Excel che uso a lavoro. Vorrei sapere come fare per aggiungere/sottrarre ad una data dei mesi.
Dentro Excel si usa la funzione DATA.MESE(), come posso replicare questa funzione?
Ho provato a vedere la funzione DATETIME ma non sono riuscito a trovare quello che interessava a me ed inoltre cercando nel forum non ho trovato un argomento simile a questo.

Grazie mille e Buona Giornata a tutti

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 354
  • Punti reputazione: 0
    • Mostra profilo
Re:Gestione delle date
« Risposta #1 il: Febbraio 09, 2021, 10:56 »
Vi sono varie possibilità, comunque, per la problematica indicata, il metodo che trovo più sbrigativo e comodo è utilizzare contemporaneamente il modulo datetime e le dateutil

un esempio:
Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
>>> from datetime import datetime
>>> from dateutil.relativedelta import relativedelta
>>> oggi = datetime.today()
>>> mesi = relativedelta(months=2)
>>> poi = oggi + mesi
>>> print('oggi è %s, tra due mesi è %s' % (oggi.strftime('%d/%m/%Y'),
poi.strftime('%d/%m/%Y')))
oggi è 09/02/2021, tra due mesi è 09/04/2021
>>>


Poi, se leggi la docs e giri un po' su internet troverai miriadi di possibili e diversificati approcci, provali.
« Ultima modifica: Febbraio 09, 2021, 10:58 da nuzzopippo »

Offline carusantonio

  • python unicellularis
  • *
  • Post: 4
  • Punti reputazione: 0
    • Mostra profilo
Re:Gestione delle date
« Risposta #2 il: Febbraio 09, 2021, 16:37 »
Grazie mille
Risposta molto esaustiva

Volevo sapere a cosa servisse questo simbolo %s

Vi sono varie possibilità, comunque, per la problematica indicata, il metodo che trovo più sbrigativo e comodo è utilizzare contemporaneamente il modulo datetime e le dateutil

un esempio:
Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
>>> from datetime import datetime
>>> from dateutil.relativedelta import relativedelta
>>> oggi = datetime.today()
>>> mesi = relativedelta(months=2)
>>> poi = oggi + mesi
>>> print('oggi è %s, tra due mesi è %s' % (oggi.strftime('%d/%m/%Y'),
poi.strftime('%d/%m/%Y')))
oggi è 09/02/2021, tra due mesi è 09/04/2021
>>>


Poi, se leggi la docs e giri un po' su internet troverai miriadi di possibili e diversificati approcci, provali.

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 354
  • Punti reputazione: 0
    • Mostra profilo
Re:Gestione delle date
« Risposta #3 il: Febbraio 09, 2021, 18:16 »
Volevo sapere a cosa servisse questo simbolo %s

È uno dei numerosi operatori di formattazione delle stringhe, ereditato dalla printf del C ... bestioline complicate le stringhe, molto "plasmabili", ci vuole un bel po' di letture e prove per giocarci benino ... un esempio sul''operatore "%" con allineamento :

>>> caratteri = ['a', 'ab', 'abc', 'abcdd']
>>> interi = [1, 12, 123, 1234]
>>> decimali = [1.0, 2.0, 30.0, 400.0]
>>> for i in range(4):
print('%5s - %5d - % 3.2f' % (caratteri[i],
      interi[i],
      decimali[i]))


    a -     1 -  1.00
   ab -    12 -  2.00
  abc -   123 -  30.00
abcdd -  1234 -  400.00
>>>

Nell'esempio ho ciclato su tre liste stampando ogni volta un valore stringa, un intero ed un float, la posizione di stampa delle variabili è indicata tramite %<tipo>, ove tipo è "s" per le stringhe, "d" per interi e "f" per i float, numeri a virgola mobile, inoltre, ho "riservato" uno spazio minimo di 5 caratteri per ogni singola variabile tramite le notazioni numeriche che leggi; le variabili sono contenute nella istruzione successiva alla stringa "% (var1, var2, ...)".

È solo uno dei molti metodi di formattazione disponibili, leggi la docs nei link, fai un po' di prove ed approfondisci, ne vale la pena ;)

Offline carusantonio

  • python unicellularis
  • *
  • Post: 4
  • Punti reputazione: 0
    • Mostra profilo
Re:Gestione delle date
« Risposta #4 il: Febbraio 10, 2021, 15:55 »
Grazie mille per le spiegazioni  :)

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.151
  • Punti reputazione: 9
    • Mostra profilo
Re:Gestione delle date
« Risposta #5 il: Febbraio 14, 2021, 12:10 »
sì beh, datetime ha già tutto ciò che serve, perché ovviamente un oggetto datetime ha dentro anche la nozione di "mese"...

>>> from datetime import datetime
>>> now = datetime.now()
>>> now.month
2

Ho paura però l'OP dovrebbe studiare python, comprendere per es. che "datetime" non è una funzione ma un oggetto con dei metodi e delle proprietà, etc...., prima di essere in grado di navigare con sicurezza nella documentazione di datetime.