Come posso stampare l'anno successivo se l'anno corrente è dato in python usando il codice più semplice, possibilmente in una riga usando il modulo datetime.Come stampare l'anno successivo in Python
risposta
Entrambi gli oggetti data e datetime hanno un attributo year
, che è un numero. Basta aggiungere 1:
>>> from datetime import date
>>> print date.today().year + 1
2013
Se avete l'anno corrente in una variabile, basta aggiungere 1 direttamente, non c'è bisogno di perdere tempo con il modulo datetime:
>>> year = 2012
>>> print year + 1
2013
Se avete la data in una stringa , basta selezionare le 4 cifre che rappresentano l'anno e passarlo al int
:
>>> date = '2012-06-26'
>>> print int(date[:4]) + 1
2013
anno aritmetica è estremamente semplice, lo rendono un intero e basta aggiungere 1. non ottiene molto più semplice di questo
Se, tuttavia, si sta lavorando con una data tutta, ed è necessario la stessa data, ma un anno dopo, utilizzare i componenti per creare un nuovo date
oggetto con l'anno incrementato di uno:
>>> today = date.today()
>>> print date(today.year + 1, today.month, today.day)
2013-06-26
oppure è possibile utilizzare la funzione .replace
, che restituisce una copia con il campo si specifica cambiato:
>>> print today.replace(year=today.year + 1)
2013-06-26
Nota che questo può avere un po 'difficile quando today
è 29 febbraio in un anno bisestile. L'assoluto, fail-safe modo corretto di lavorare questo è così:
def nextyear(dt):
try:
return dt.replace(year=dt.year+1)
except ValueError:
# February 29th in a leap year
# Add 365 days instead to arrive at March 1st
return dt + timedelta(days=365)
La funzione' .replace' non funziona in modo affidabile. 'd = date (2012, 2, 29)' 'd.replace (year = d.year + 1)' genera 'ValueError: day is out of range for month' e nemmeno la precedente opzione per la costruzione di un nuovo oggetto data gestire questo caso. – Duncan
@Duncan: bello; la domanda è allora, che cos'è il 29 febbraio un anno dopo? 1 marzo? –
Di solito il 1 ° marzo ma potrebbero esserci delle eccezioni. Se sottoscrivi un legame di 1 anno il 29 febbraio, penso che maturerà il 1 marzo dell'anno successivo. Ovviamente, una volta entrati nei calcoli monetari, maturerà effettivamente il primo giorno lavorativo che è almeno un anno di riposo durante i fine settimana e nei giorni festivi. – Duncan
- 1. Come stampare colore/colore in python?
- 2. come stampare array 3x3 in python?
- 3. Come stampare zero zero in Python
- 4. Datetime Python - Giorno lavorativo successivo
- 5. Come stampare simboli come ● nei file in Python
- 6. Come stampare interi come stringhe esadecimali utilizzando json.dumps() in Python
- 7. Come potrei stampare una docstring python?
- 8. Come stampare il backslash con Python?
- 9. Impossibile stampare json da python
- 10. come stampare l'ubicazione di python (dove python è installato) nell'output
- 11. Perché Python 3 (o successivo) è migliore di Python 2?
- 12. Come posso stampare molte cifre significative in Python?
- 13. come stampare ogni riga in un file python
- 14. Come stampare interruzioni di riga in Python modello Django
- 15. Come stampare la documentazione del modulo in Python
- 16. Come stampare un particolare valore JSON in Python?
- 17. Come stampare un dizionario riga per riga in Python?
- 18. principiante unicode python: come stampare una serie di lettere?
- 19. Come stampare in C
- 20. Come ottenere l'elemento "successivo" in OrderedDict?
- 21. Come usare successivo con iniettare in Ruby
- 22. Python re.findall stampare tutti i modelli
- 23. Come stampare in Retrofit 2?
- 24. Come stampare i modelli di argomenti LDA da gensim? Python
- 25. come stampare parola cinese nel mio codice .. usando python
- 26. Python WebDriver come stampare l'intera pagina sorgente (html)
- 27. Come stampare su stdout da script Python con estensione .pyw?
- 28. Come stampare da Flask @ app.route alla console python
- 29. Come stampare le linee del codice sorgente nel logger python
- 30. Come stampare un file JSON?
mi metterò '2005' dal seguente codice 'time.strftime (' % Y 'time.strptime (' 2005-11- 11 ','% Y-% m-% d '))' .. ora quello che mi serve è ottenere '2006' senza molte modifiche a questo codice – Alchemist777
'time.strptime ('2005-11-11', '% Y-% m-% d '). Tm_year + 1' – icecrime
'anno di stampa + 1' – Matthias