sonic-pi

https://github.com/sonic-pi-net/sonic-pi

C++

Code. Music. Live.

Time#change

Returns a new Time where one or more of the elements have been changed according
to the +options+ parameter. The time options (<tt>:hour</tt>, <tt>:min</tt>,
<tt>:sec</tt>, <tt>:usec</tt>) reset cascadingly, so if only the hour is passed,
then minute, sec, and usec is set to 0. If the hour and minute is passed, then
sec and usec is set to 0.  The +options+ parameter takes a hash with any of these
keys: <tt>:year</tt>, <tt>:month</tt>, <tt>:day</tt>, <tt>:hour</tt>, <tt>:min</tt>,
<tt>:sec</tt>, <tt>:usec</tt>.

  Time.new(2012, 8, 29, 22, 35, 0).change(day: 1)              # => Time.new(2012, 8, 1, 22, 35, 0)
  Time.new(2012, 8, 29, 22, 35, 0).change(year: 1981, day: 1)  # => Time.new(1981, 8, 1, 22, 35, 0)
  Time.new(2012, 8, 29, 22, 35, 0).change(year: 1981, hour: 0) # => Time.new(1981, 8, 29, 0, 0, 0)

Source | Google | Stack overflow

Edit

git clone [email protected]:sonic-pi-net/sonic-pi.git

cd sonic-pi

open app/server/ruby/vendor/activesupport-7.0.6/lib/active_support/core_ext/time/calculations.rb

Contribute

# Make a new branch

git checkout -b -your-name--update-docs-Time-change-for-pr


# Commit to git

git add app/server/ruby/vendor/activesupport-7.0.6/lib/active_support/core_ext/time/calculations.rbgit commit -m "better docs for Time#change"


# Open pull request

gem install hub # on a mac you can `brew install hub`

hub fork

git push <your name> -your-name--update-docs-Time-change-for-pr

hub pull-request


# Celebrate!