In comp.lang.python, Chris Angelico <ros...@gmail.com> wrote: > There are multiple definitions for "day of year", depending on how you > want to handle certain oddities. The simplest is to identify Jan 1st > as 1, Jan 2nd as 2, etc, to Dec 31st as either 365 or 366; but some > libraries will define the year as starting with the week that contains > the Thursday, or something, and then will define days of year > accordingly.
That sounds like some weird off-shoot of the ISO-8601 calendar. That document primarily concerns itself with weeks. Week 1 of a year is the first week with a Thursday in it. The last week of a year will be either 52 or 53, and you can have things like days in January belonging to the week of the previous year. Wikipedia gives examples: https://en.wikipedia.org/wiki/ISO_week_date If you are operating on that, then it might indeed make sense to number the days from YYYY-W1-1. I can't say I've ever encountered that. Since W1-1 is always a Monday on the ISO calendar, it would have the neat property that you could always turn day of year into day of week with a mod operation. It would have the quirk that years are either 364 or 371 days, neither of which most people would answer when asked "How many days are there in a year?" I've only used ISO dates for by-week graphs, because they have the nice property of "all weeks are seven days", so you don't get oddball weeks screwing up your plots. > If you want an easy way to graph day-by-day data and the exact day > numbers are irrelevant, what I'd recommend is: Convert the date into > Unix time, divide by 86400, floor it. That'll give you a Julian-style > date number where Jan 1st 1970 is 0, Jan 2nd is 1, etc, and at the end > of a year, it'll just keep on incrementing. That would get you past > the 2020/2021 boundary pretty smoothly. That works well. The previous suggestion using January 1st 2020 as an epoch start is also good. Elijah ------ also finds "week starts on Monday" to be oddball about ISO-8601 -- https://mail.python.org/mailman/listinfo/python-list