sonic-pi

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

C++

Code. Music. Live.

DateTime#change

Returns a new DateTime 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>) reset cascadingly, so if only the hour is
passed, then minute and sec is set to 0. If the hour and minute is passed,
then sec 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>:offset</tt>, <tt>:start</tt>.

  DateTime.new(2012, 8, 29, 22, 35, 0).change(day: 1)              # => DateTime.new(2012, 8, 1, 22, 35, 0)
  DateTime.new(2012, 8, 29, 22, 35, 0).change(year: 1981, day: 1)  # => DateTime.new(1981, 8, 1, 22, 35, 0)
  DateTime.new(2012, 8, 29, 22, 35, 0).change(year: 1981, hour: 0) # => DateTime.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/date_time/calculations.rb

Contribute

# Make a new branch

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


# Commit to git

git add app/server/ruby/vendor/activesupport-7.0.6/lib/active_support/core_ext/date_time/calculations.rbgit commit -m "better docs for DateTime#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-DateTime-change-for-pr

hub pull-request


# Celebrate!