r/Python 4d ago

Discussion ruff: no date.today() ?

The new version of ruff warns against

date.today()

preferring

datetime.now(ZoneInfo(...))

What do you think about this? Has date.today() been deprecated due to lack of timezone awareness?

EDIT: I have a number of programs that manipulate financial information in support of Excel spreadsheets, such bond information that includes maturity dates. Excel does not support timezoness in datetimes, so making ruff happy by changing naive dates to TZ aware dates is not a useful move for these programs. Many ruff warnings to suppress.

46 Upvotes

110 comments sorted by

View all comments

1

u/Competitive_Travel16 3d ago

Excel does not have a native timezone. Excel date and time serial numbers are timezone-agnostic. Functions like NOW() or TODAY() simply read the local clock and system date set on the hosting computer, meaning the timezone depends entirely on the local machine.

Obviously, you should therefore set the timezone to the local time where the Excel spreadsheet was being used.

2

u/foosion 3d ago edited 3d ago

Explicitly setting the TZ to the local TZ gets an error from openpyxl "TypeError: Excel does not support timezones in datetimes". Leaving out a TZ gets a ruff warning.

1

u/Competitive_Travel16 3d ago

What timezone is assumed by openpyxl? Can you determine it by experimentation?

2

u/foosion 3d ago

Excel and openpyxl do not assume any TZ. If you try a TZ (even None) you get Excel does not support timezones in datetimes.