package core:time/datetime
⌘K
Ctrl+K
or
/
Overview
Calendrical conversions using a proleptic Gregorian calendar.
Implemented using formulas from: Calendrical Calculations Ultimate Edition, Reingold & Dershowitz
Index
Variables (0)
This section is empty.
Procedures (42)
- add_days_to_date
- add_delta_to_date
- add_delta_to_datetime
- adjusted_remainder
- biggest
- components_to_date
- components_to_datetime
- components_to_ordinal
- components_to_time
- date_to_ordinal
- day_number
- day_of_week
- days_remaining
- divmod
- floor_div
- gcd
- interval_mod
- is_leap_year
- last_day_of_month
- lcm
- new_year
- normalize_delta
- ordinal_to_date
- ordinal_to_datetime
- product
- sign
- smallest
- subtract_dates
- subtract_datetimes
- subtract_deltas
- sum
- unsafe_date_to_ordinal
- unsafe_ordinal_to_date
- unsafe_ordinal_to_year
- validate_date
- validate_datetime
- validate_hour_minute_second
- validate_ordinal
- validate_time
- validate_year_month_day
- year_end
- year_range
Types
Date ¶
Related Procedures With Parameters
- add_days_to_date
- add_delta_to_date
- date_to_ordinal
- day_number
- days_remaining
- subtract_dates
- unsafe_date_to_ordinal
- validate_date
- add (procedure groups)
- sub (procedure groups)
- validate (procedure groups)
Related Procedures With Returns
Related Constants
DateTime ¶
Related Procedures With Parameters
- add_delta_to_datetime
- subtract_datetimes
- validate_datetime
- add (procedure groups)
- sub (procedure groups)
- validate (procedure groups)
Related Procedures With Returns
Procedures Through `using` From Date
- add_days_to_date
- add_delta_to_date
- date_to_ordinal
- day_number
- days_remaining
- subtract_dates
- unsafe_date_to_ordinal
- validate_date
Procedures Through `using` From Time
Delta ¶
Delta :: struct { days: i64, // These are all i64 because we can also use it to add a number of seconds or nanos to a moment, seconds: i64, // that are then normalized within their respective ranges. nanos: i64, }
Related Procedures With Parameters
- add_delta_to_date
- add_delta_to_datetime
- normalize_delta
- subtract_deltas
- add (procedure groups)
- sub (procedure groups)
Related Procedures With Returns
Error ¶
Error :: enum int { None, Invalid_Year, Invalid_Month, Invalid_Day, Invalid_Hour, Invalid_Minute, Invalid_Second, Invalid_Nano, Invalid_Ordinal, Invalid_Delta, }
Related Procedures With Returns
- add_days_to_date
- add_delta_to_date
- add_delta_to_datetime
- components_to_date
- components_to_datetime
- components_to_ordinal
- components_to_time
- date_to_ordinal
- day_number
- days_remaining
- last_day_of_month
- new_year
- normalize_delta
- ordinal_to_date
- ordinal_to_datetime
- subtract_dates
- subtract_datetimes
- subtract_deltas
- validate_date
- validate_datetime
- validate_hour_minute_second
- validate_ordinal
- validate_time
- validate_year_month_day
- year_end
- add (procedure groups)
- sub (procedure groups)
- validate (procedure groups)
Month ¶
Month :: enum i8 { January = 1, February, March, April, May, June, July, August, September, October, November, December, }
Ordinal ¶
Ordinal :: i64
Ordinal 1 = Midnight Monday, January 1, 1 A.D. (Gregorian) | Midnight Monday, January 3, 1 A.D. (Julian)
Time ¶
Related Procedures With Parameters
- validate_time
- validate (procedure groups)
Related Procedures With Returns
Weekday ¶
Weekday :: enum i8 { Sunday = 0, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, }
Related Procedures With Returns
Constants
MAX_DATE ¶
MAX_DATE :: Date{year = 25_252_734_927_766_552, month = 12, day = 31}
MIN_DATE ¶
MIN_DATE :: Date{year = -25_252_734_927_766_552, month = 1, day = 1}
Minimum and maximum dates and ordinals. Chosen for safe roundtripping.
Variables
This section is empty.
Procedures
adjusted_remainder ¶
x mod [1..b]
divmod ¶
divmod :: proc "contextless" (x, y: $T, loc := #caller_location) -> (a: $T, r: $T) {…}
Caller has to ensure y != 0
interval_mod ¶
Half open: x mod [1..b]
is_leap_year ¶
Validation helpers
year_range ¶
year_range :: proc(#any_int year: i64, allocator := context.allocator) -> (range: []Date) {…}
Procedure Groups
add ¶
add :: proc{ add_days_to_date, add_delta_to_date, add_delta_to_datetime, }
sub ¶
sub :: proc{ subtract_datetimes, subtract_dates, subtract_deltas, }
validate ¶
validate :: proc{ validate_date, validate_year_month_day, validate_ordinal, validate_hour_minute_second, validate_time, validate_datetime, }
Source Files
Generation Information
Generated with odin version dev-2024-04 (vendor "odin") Windows_amd64 @ 2024-04-26 21:08:59.125622100 +0000 UTC