time_ext
Extends the functionality of the core Time object by adding a date specific span object called DateSpan. Whereas Time::Span represents a passage of time specified by seconds, Time::DateSpan represents a passage of time represented by months, days and seconds. With this, a developer can represent a specific number of days, regardless of a Daylight Savings Time shift, or a number of a months, regardless of any leap days that may be in between.
This library also overrides some of the convenience methods to the Int object, to return DateSpan instead of Span objects for Int#days, Int#weeks, Int#months, and Int#years.
NOTE This library is just a rough draft. This functionality is being added to the Crystal core library.
Installation
Add this to your application's shard.yml
:
dependencies:
time_ext:
github: your-github-user/time_ext
Usage
require "time_ext"
Creating an DateSpan instance:
Time::DateSpan.new(5, 0, 0) #=> 5 years Time::DateSpan.new(0, 0, 3) #=> 3 days
Integer convenience methods:
72.hours #=> 3.00:00:00 Time::Span
3.days #=> 3.00:00:00 Time::DateSpan
Adding Spans and DateSpans to a Time instance:
time = Time.new(2018, 11, 3, 9, 0, 0)
time + 72.hours #=> 2018-11-06 08:00:00.0 -05:00 Local
time + 3.days #=> 2018-11-06 09:00:00.0 -05:00 Local
Development
TODO Write development instructions here
Contributing
- Fork it (https://github.com/your-github-user/time_ext/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- HCLarsen Chris Larsen - creator, maintainer