#date-time #date #chrono #date-utilities #date-utils

perDiem

A comprehensive collection of timezone-naive date and datetime utilities

14 releases

0.1.67 May 27, 2024
0.1.66 May 27, 2024
0.1.64 Apr 5, 2024
0.1.63 Feb 22, 2024
0.0.2 Oct 26, 2023

#101 in Date and time

Download history 78/week @ 2024-07-29 11/week @ 2024-09-23

941 downloads per month

MIT license

89KB
1.5K SLoC

perDiem

0.1.6x Patch notes:

Message me on Discord @ dtimer for any feedback or suggestions

IMPORTANT:

It is strongly recommended to use a version past 0.1.66, as previous versions have a bug where leap day would convert to Feb 28 rather than March 1 after adding a year

Adds:

OrdinalDate struct
increase and decrease ordinally functions
to_OrdinalDate
Finally adding decrease function for Date and DateTime(decrease_ordinally_as_new and decrease_ordinally)
Improves documentation a ton

Fixes/Changes:

Fixes a ton of tests in the docs that didn't have imports, and some errors
Changed the start year for .new() for Date, DateTime, and OrdinalDate to 0, (Was 1)
Changed some doc descriptions for clarity
Removed unnecessary checks due to type restrictions
Made 24 an invalid hour(Should be hour 0)
Fixed 29/2 being change to a non leap year returning 28/2 rather than 1/3
Rewrite of weekday calculation
Removes compare_dyn_any_value
Removes allShareEL for Date and DateTime
Fixes README

Normal README:

The Date struct:

Fields:

day: i8
month: i8
year: i16
Implementations

The DateTime struct:

Fields:

second: i8
minute: i8
hour: i8
day: i8
month: i8
year: i16
Implementations

The TimeDifference struct:

Used to represent the difference between Dates and DateTimes Fields:

second: i32 minute: i32
hour: i32
day: i32
month: i32
year: i32
Implementations

The TimeSpan enum:

Used for increase and decrease methods(WIP)
Variants:

second: i32 minute: i32
hour: i32
day: i32
month: i32
year: i32

Dependencies

~1.5–2.3MB
~42K SLoC