/timely

A set of ruby date and time helpers

Primary LanguageRubyMIT LicenseMIT

Timely

Build Status Coverage Status Code Climate

DESCRIPTION

Various helpers to work with times, dates and weekdays, etc.

It includes the following (see end for full descriptions)

  • Core extensions to Date and Time
  • DateChooser, a class to help select a subset of dates within any range, e.g. All 2nd Sundays, Every 15th of the month, All Tuesdays and Wednesdays
  • WeekDays, a class to manage the selection of weekdays, outputs a integer representing which days as a number between 0 and 127 (e.g. a 7 bit integer)
  • DateRange: A subclass of Range for dates with various helpers and aliases
  • TrackableDateSet: Recording set of dates processed/processing
  • TemporalPatterns: Various other classes related to time, e.g. Frequency

It includes the following rails extensions (only loaded if inside rails project):

  • Date Group, a date range which can also be limited to WeekDays, e.g. all weekends between March and April
  • Season, a collection of Date Groups
  • weekdays_field, a way to declare an integer field to store weekdays (weekdays is stored as 7 bit integer)
  • acts_as_seasonal, a way to declare a season_id foreign key as well as some helper methods

INSTALLATION

gem install timely

or add to your Gemfile: gem 'timely'

SYNOPSIS

require 'timely'

For examples on most usage see the tests in the spec directory. As these contain many basic examples with expected output.

Core Extensions

some_date = Date.today - 5      # => 2008-05-03
some_date.at_time(3, 5, 13)     # => Sat May 03 03:05:13 -0500 2008

# arguments are optional
some_date.at_time(13)           # => Sat May 03 13:00:00 -0500 2008

some_time = Time.now - 345678   # => Sun May 04 13:40:22 -0500 2008
some_time.on_date(2001, 6, 18)  # => Mon Jun 18 13:40:22 -0500 2001

# if you have objects corresponding to the times/dates you want
some_time.on_date(some_date)    # => Sat May 03 13:40:22 -0500 2008
some_date.at_time(some_time)    # => Sat May 03 13:40:22 -0500 2008

# if you like typing less
some_time.on(some_date)         # => Sat May 03 13:40:22 -0500 2008
some_date.at(some_time)         # => Sat May 03 13:40:22 -0500 2008

Release

To publish a new version of this gem the following steps must be taken.

  • Update the version in the following files
      CHANGELOG.md
      lib/timely/version.rb
    
  • Create a tag using the format v0.1.0
  • Follow build progress in GitHub actions