module supplies classes for manipulating dates and times in both simple and complex ways.
A naive object does not contain enough information to unambiguously locate itself relative to other date/time objects.Whether a naive object represents Coordinated Universal Time (UTC), local time, or time in some other timezone is purely up to the program, just like it’s up to the program whether a particular number represents metres, miles, or mass.Naive objects are easy to understand and to work with, at the cost of ignoring some aspects of reality. Supporting timezones at whatever level of detail is required is up to the application.The rules for time adjustment across the world are more political than rational, and there is no standard suitable for every application.The If any argument is a float and there are fractional microseconds, the fractional microseconds left over from all arguments are combined and their sum is rounded to the nearest microsecond.
If no argument is a float, the conversion and normalization processes are exact (no information is lost).
If the normalized value of days lies outside the indicated range, object represents a date (year, month and day) in an idealized calendar, the current Gregorian calendar indefinitely extended in both directions.
January 1 of year 1 is called day number 1, January 2 of year 1 is called day number 2, and so on.
This matches the definition of the “proleptic Gregorian” calendar in Dershowitz and Reingold’s book Calendrical Calculations, where it’s the base calendar for all computations.
See the book for algorithms for converting between proleptic Gregorian ordinals and many other calendar systems.
Return a 3-tuple, (ISO year, ISO week number, ISO weekday).