A string-based date-time library for Javascript.
Iso-fns is a date-time library for Javascript based on the Temporal Proposal for JavaScript and inspired by date-fns which represents all date-time primitives as strings formatted according the iso-8601 standard. An instant in time is represented as a string formatted as "YYYY-MM-DDThh:mm:ss.sssZ" and a date (or plain date) is represented as "YYYY-MM-DD". Each function in this library will input some iso 8601 string and perform an operation on it, returning another iso 8601 formatted string.
A type represented as a javascript class cannot be sent over the wire in a JSON payload without being serialized. Then on the other end of the wire, the payload has to be deserialized into a class again to access the methods. Representing the type as a string avoids this boilerplate, since the type can be sent over the wire directly and performing operations on the type requires no deserialization.
An additional benefit to this approach is the transparency of strings. There can be no internal state, no overwritten methods, or any other difficult-to-follow structure. Strings are the most readable format for date-time information.
There are 7 fundamental types covered by this library
- Instant (yyyy-mm-ddThh:mm:ss.mmmZ)
- DateTime (yyyy-mm-ddThh:mm:ss.mmm | yyyy-mm-ddThh:mm:ss | yyyy-mm-ddThh:mm)
- Date (yyyy-mm-dd)
- Time (hh:mm:ss.mmm | hh:mm:ss | hh:mm)
- YearMonth (yyyy-mm)
- MonthDay (--mm-dd)
- Duration (PnYnMnWnDTnHnMnS)
For documentation on the functions included in this library, check out https://iso-fns.org.
Thanks goes to these wonderful people (emoji key):
Grant Colestock 💻 |
Kolton Musgrove 💻 |
Marcato Partners 💵 🧑🏫 📓 |
This project follows the all-contributors specification. Contributions of any kind welcome!