Получить объект даты для первого / последнего дня текущего года - PullRequest
28 голосов
/ 24 марта 2011

Мне нужно получить date объектов за первый и последний день текущего года.

В настоящее время я использую этот код, который отлично работает, но мне любопытно, есть ли лучший способ сделать это; например без указания месяца / дня вручную.

from datetime import date
a = date(date.today().year, 1, 1)
b = date(date.today().year, 12, 31)

Ответы [ 4 ]

18 голосов
/ 24 марта 2011

Единственное реальное улучшение, которое приходит на ум, - дать вашим переменным более описательные имена, чем a и b.

6 голосов
/ 30 января 2017

В библиотеке python ничего нет, но есть внешние библиотеки, которые обертывают эту функциональность. Например, pandas имеет библиотеку временных рядов, с которой вы можете сделать:

from datetime import date
from pandas.tseries import offsets

a = date.today() - offsets.YearBegin()
b = date.today() + offsets.YearEnd()

Хотя pandas излишне, если все, что вам нужно, это начало года и функциональность на конец года, он также поддерживает множество других концепций высокого уровня, таких как рабочие дни, праздничные календари, месяц / квартал / год смещения: http://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects

3 голосов
/ 14 мая 2017
from datetime import datetime

starting_day_of_current_year = datetime.now().date().replace(month=1, day=1)    
ending_day_of_current_year = datetime.now().date().replace(month=12, day=31)
0 голосов
/ 24 мая 2019

У вас будут какие-то забавные вещи, если вы будете работать так поздно в канун Нового года, и два звонка на today() пересекают границы года.Это безопаснее:

from datetime import date

epoch_year = date.today().year
year_start = date(epoch_year, 1, 1)
year_end = date(epoch_year, 12, 31)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...