Search code examples
pythondatetimetimedelta

Days till year end


I need to find the numbers of days left from today till the end of the year. I know I can calculate this by simply subtracting today's date from the December 31st of this year, ie:

current_year = dt.datetime.now().year
days_left = dt.date(current_year, 12, 31) - dt.datetime.now().date()

Is there a smarter/faster way to do this?


Solution

  • You may find this a little more concise:

    import datetime as dt
    from timeit import timeit
    
    def v1():
        today = dt.date.today()
        end_of_year = dt.date(today.year, 12, 31)
        return (end_of_year - today).days
    
    def v2():
        current_year = dt.datetime.now().year
        days_left = dt.date(current_year, 12, 31) - dt.datetime.now().date()
        return days_left.days
    
    for func in v1, v2:
        print(func.__name__, timeit(func))
    

    Output:

    v1 0.919826476999333
    v2 1.319277847000194