Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tmlee/time_difference
The missing Ruby method to print out time difference (duration) in year, month, week, day, hour, minute, and second.
https://github.com/tmlee/time_difference
Last synced: 3 months ago
JSON representation
The missing Ruby method to print out time difference (duration) in year, month, week, day, hour, minute, and second.
- Host: GitHub
- URL: https://github.com/tmlee/time_difference
- Owner: tmlee
- License: mit
- Created: 2013-04-12T16:04:40.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-03-01T09:29:11.000Z (9 months ago)
- Last Synced: 2024-06-18T12:48:10.746Z (5 months ago)
- Language: Ruby
- Homepage: https://rubygems.org/gems/time_difference
- Size: 32.2 KB
- Stars: 305
- Watchers: 13
- Forks: 92
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/tmlee/time_difference.png)](https://travis-ci.org/tmlee/time_difference)
This latest version of the gem works with ActiveSupport 5.1. For prior version, check out [v0.6.x-activesupport42](https://github.com/tmlee/time_difference/tree/0.6.0-activesupport42)
# TimeDifference
TimeDifference is the missing Ruby method to calculate difference between two given time. You can do a Ruby time difference in year, month, week, day, hour, minute, and seconds.
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'time_difference'
```And then execute:
```bash
$ bundle install
```## Usage
### Works for Time, DateTime, and Date
```ruby
# Time
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)TimeDifference.between(start_time, end_time).in_years
=> 1.0# DateTime
start_time = DateTime.new(2013,1)
end_time = DateTime.new(2014,1)TimeDifference.between(start_time, end_time).in_years
=> 1.0# Date
start_time = Date.new(2013,1)
end_time = Date.new(2014,1)TimeDifference.between(start_time, end_time).in_years
=> 1.0
```### Get the time difference in various units
```ruby
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)TimeDifference.between(start_time, end_time).in_years
=> 1.0TimeDifference.between(start_time, end_time).in_months
=> 12.0TimeDifference.between(start_time, end_time).in_weeks
=> 52.14TimeDifference.between(start_time, end_time).in_days
=> 365.0TimeDifference.between(start_time, end_time).in_hours
=> 8760.0TimeDifference.between(start_time, end_time).in_minutes
=> 525600.0TimeDifference.between(start_time, end_time).in_seconds
=> 31536000.0
```### Get the time difference in each component
```ruby
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)TimeDifference.between(start_time, end_time).in_each_component
=> {:years=>1.0, :months=>12.0, :weeks=>52.14, :days=>365.0, :hours=>8760.0, :minutes=>525600.0, :seconds=>31536000.0}
```### If you would like an overall estimated time component, use `in_general` _(not that accurate)_
```ruby
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)TimeDifference.between(start_time, end_time).in_general
=> {:years=>0, :months=>12, :weeks=>0, :days=>5, :hours=>0, :minutes=>0, :seconds=>0}
```### You can also get `in_general` as a human readable string, using `humanize`
```ruby
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)TimeDifference.between(start_time, end_time).humanize
=> "12 Months and 5 Days"
```## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Added some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request