我需要date在今年的第一天和最后一天获得对象.
目前我正在使用这个工作正常的代码,但我很好奇是否有更好的方法来做到这一点; 例如,无需手动指定月/日.
from datetime import date
a = date(date.today().year, 1, 1)
b = date(date.today().year, 12, 31)
Run Code Online (Sandbox Code Playgroud)
Tre*_*ton 11
如果你碰巧在除夕夜这么晚跑步,并且接到两次today()跨年界限的电话,你会遇到一些奇怪的事情。这样做更安全:
from datetime import date
epoch_year = date.today().year
year_start = date(epoch_year, 1, 1)
year_end = date(epoch_year, 12, 31)
Run Code Online (Sandbox Code Playgroud)
Ibr*_*tov 10
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)
Run Code Online (Sandbox Code Playgroud)
python库中没有任何内容,但有外部库包含此功能.例如,pandas有一个时间序列库,您可以使用它来执行:
from datetime import date
from pandas.tseries import offsets
a = date.today() - offsets.YearBegin()
b = date.today() + offsets.YearEnd()
Run Code Online (Sandbox Code Playgroud)
虽然pandas是矫枉过正,如果你想要的是一年的开始和年末功能,它也有很多其他高层次的概念,如工作日,假期日历,月/季度/年的补偿支持:HTTP://pandas.pydata.组织/大熊猫-DOCS /稳定/ timeseries.html#dateoffset对象
import datetime
year = 2016
first_day_of_year = datetime.date.min.replace(year = year)
last_day_of_year = datetime.date.max.replace(year = year)
print(first_day_of_year, last_day_of_year)
Run Code Online (Sandbox Code Playgroud)
如果我们想获得一年开始或结束的确切时间怎么办?一样。替换datetime.date为datetime.datetime,这样你就得到了一年中最后一天的datetime.datetime格式。
为了让这个更漂亮,将整个事情包装在一个函数中:
import datetime
def year_range(year, datetime_o = datetime.date):
return (
datetime_o.min.replace(year = year),
datetime_o.max.replace(year = year)
)
print(year_range(2016, datetime.date))
print(year_range(2016, datetime.datetime))
Run Code Online (Sandbox Code Playgroud)
输出:
(datetime.date(2016, 1, 1), datetime.date(2016, 12, 31))
(datetime.datetime(2016, 1, 1, 0, 0), datetime.datetime(2016, 12, 31, 23, 59, 59, 999999))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22579 次 |
| 最近记录: |