2013-01-20 21 views
14

È possibile creare l'oggetto date solo con anno e mese? Non ho bisogno di giorno.Data oggetto con anno e mese solo

In [5]: from datetime import date 

In [6]: date(year=2013, month=1) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-6-a84d4034b10c> in <module>() 
----> 1 date(year=2013, month=1) 

TypeError: Required argument 'day' (pos 3) not found 

sto con data oggetto come chiave nel mio dizionario e il 20 gennaio devono avere la stessa chiave 21 gennaio perché sono in stesso mese e anno.

Ho usato un numero intero semplice prima del numero del mese. Purtroppo ho bisogno di sapere anche l'anno!

risposta

11

No, non puoi farlo. Per il vostro caso d'uso, utilizzare una tupla invece:

key = (2013, 1) 

Dal momento che non c'è bisogno di fare data manipolazioni sul valore di una tupla più che sufficiente un.

7

In aggiunta ad altre risposte, è possibile utilizzare namedtuple.

from collections import namedtuple 
MyDate = namedtuple('MyDate', ['month', 'year']) 
dkey = MyDate(year=2013, month=1) 
1

Se si desidera utilizzare datetime, è necessario seguire il suo attributo. Qui lo cito dal sito ufficiale: "Una data ingenua idealizzata, assumendo che l'attuale calendario gregoriano sia sempre stato, e sarà sempre, in effetti. Attributi: anno, mese e giorno." Quindi, non puoi ignorare il giorno e ricorda di dare un incarico.

2
import datetime 

date = datetime.date(year=2013, month=1, day=4) 
str(date.year) + '-' + str(date.month) 
Problemi correlati