2013-01-20 17 views
14

Czy jest możliwe utworzenie obiektu date tylko z rokiem i miesiącem? Nie potrzebuję dnia.Obiekt Data tylko z roku i miesiąca

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 

Używam datę obiekt jako klucz w moim słowniku, a 20 stycznia muszą mieć ten sam klucz jak 21 stycznia, ponieważ są one w tym samym miesiącu i roku.

Użyłem prostej liczby całkowitej przed tym numerem miesiąca. Niestety muszę też znać rok!

Odpowiedz

11

Nie, nie możesz tego zrobić. Dla Państwa usecase użyć krotki Zamiast:

key = (2013, 1) 

Ponieważ nie trzeba robić date manipulacje na wartości krotka więcej niż wystarczające.

7

Jako uzupełnienie innej odpowiedzi, możesz użyć namedtuple.

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

Jeśli chcesz używać datetime, musisz przestrzegać jego atrybutu. Tutaj zacytuję go na oficjalnej stronie internetowej: "Wyidealizowana data naiwna, zakładając, że obecny kalendarz gregoriański zawsze był i zawsze będzie obowiązywać. Atrybuty: rok, miesiąc i dzień." Nie można więc ignorować dnia i pamiętać o przydzieleniu zadania.

2
import datetime 

date = datetime.date(year=2013, month=1, day=4) 
str(date.year) + '-' + str(date.month) 
Powiązane problemy