1. 29 11月, 2017 1 次提交
    • T
      Refactor Date/Time next_occurring and prev_occurring · 333ff24b
      T.J. Schuck 提交于
      These methods were originally added in https://github.com/rails/rails/pull/26600
      
      This includes a couple of refactors to make these methods behave more similarly to other Date/Time extensions added by Active Support:
      
      1. Use `advance` instead of `since` and `ago` to time-travel — this is particularly important to keep the returned instance’s class matching `self`.  Before this change:
      
          today = Date.today                     # => Tue, 28 Nov 2017
          today.class                            # => Date
          today.next_occurring(:wednesday)       # => Wed, 29 Nov 2017 00:00:00 UTC +00:00
          today.next_occurring(:wednesday).class # => ActiveSupport::TimeWithZone
      
        After this change, a Date (or Time, or DateTime) instance is properly returned (just like is shown in the new docs).  This is generally how everything else in DateAndTime::Calculations works.
      
      2. Move the tests from the DateTime tests to the DateAndTimeBehavior tests.  The latter location is mixed in to the core_ext tests for _all_ of Date, Time, and DateTime to test the behavior across all of the classes.  The previous location is for testing core_ext functionality added specifically just to DateTime.
      
      3. Better docs!
      333ff24b
  2. 25 10月, 2017 2 次提交
  3. 11 7月, 2017 1 次提交
  4. 09 7月, 2017 1 次提交
  5. 02 7月, 2017 1 次提交
  6. 01 7月, 2017 1 次提交
  7. 30 5月, 2017 1 次提交
  8. 15 4月, 2017 1 次提交
  9. 02 3月, 2017 1 次提交
    • A
      Update `DateTime#change` to support usec and nsec · b5af7515
      Andrew White 提交于
      Adding support for these options now allows us to update the
      `DateTime#end_of` methods to match the equivalent `Time#end_of`
      methods, e.g:
      
          datetime = DateTime.now.end_of_day
          datetime.nsec == 999999999 # => true
      
      Fixes #21424.
      b5af7515
  10. 06 2月, 2017 1 次提交
  11. 25 12月, 2016 1 次提交
  12. 29 10月, 2016 1 次提交
  13. 07 8月, 2016 2 次提交
  14. 05 5月, 2016 1 次提交
    • A
      Fix tests when preserving timezones · b782665c
      Andrew White 提交于
      These two tests are explicitly testing that to_time is returning times
      with the sytem timezone's UTC offset, therefore they will fail when
      running them with `ActiveSupport.to_time_preserves_timezone = true`.
      b782665c
  15. 24 4月, 2016 2 次提交
    • A
      Make getlocal and getutc always return instances of Time · ee5e476a
      Andrew White 提交于
      Previously these methods could return either a DateTime or a Time
      depending on how the ActiveSupport::TimeWithZone instance had
      been constructed. Changing to always return an instance of Time
      eliminates a possible stack level too deep error in to_time where
      it was wrapping a DateTime instance.
      
      As a consequence of this the internal time value is now always an
      instance of Time in the UTC timezone, whether that's as the UTC
      time directly or a representation of the local time in the timezone.
      
      There should be no consequences of this internal change and if
      there are it's a bug due to leaky abstractions.
      ee5e476a
    • A
      Add DateTime#subsec · a424bbb2
      Andrew White 提交于
      Mirrors the Time#subsec method by returning the fraction
      of the second as a Rational.
      a424bbb2
  16. 23 4月, 2016 1 次提交
  17. 04 4月, 2016 1 次提交
    • A
      Call super instead of returning nil for DateTime#<=> · 08073125
      Andrew White 提交于
      The native DateTime#<=> implementation can be used to compare instances
      with numeric values being considered as astronomical julian day numbers
      so we should call that instead of returning nil.
      
      Fixes #24228.
      08073125
  18. 20 2月, 2016 1 次提交
  19. 07 6月, 2015 1 次提交
  20. 06 1月, 2015 1 次提交
    • P
      DateTime#<=> return nil when compare to the invalid String as Time. · 0599bfa2
      pocke 提交于
      before:
      
          p Time.now ==  'a'  # => false
          p Time.now <=> 'a'  # => nil
      
          require 'active_support'
          require 'active_support/core_ext'
      
          p Time.now ==  'a'  # => false
          p Time.now <=> 'a'  # => invalid date (ArgumentError)
      
      and on ruby 2.2, Time.now == 'a' warning.
      
          warning: Comparable#== will no more rescue exceptions of #<=> in the next release.
          warning: Return nil in #<=> if the comparison is inappropriate or avoid such comparison.
      
      after:
      
      - Error handling.
      - Quiet warnings.
      0599bfa2
  21. 03 7月, 2014 1 次提交
  22. 18 6月, 2014 1 次提交
  23. 30 8月, 2013 1 次提交
  24. 29 7月, 2013 2 次提交
  25. 13 6月, 2013 1 次提交
  26. 04 5月, 2013 1 次提交
    • A
      Squashed commit of the following: · 4c242e6d
      Aaron Patterson 提交于
      commit 2683de5da85135e8d9fe48593ff6167db9d64b18
      Author: Aaron Patterson <aaron.patterson@gmail.com>
      Date:   Fri May 3 11:29:20 2013 -0700
      
          cannot support infinite ranges right now
      
      commit cebb6acef2c3957f975f6db4afd849e535126253
      Author: Aaron Patterson <aaron.patterson@gmail.com>
      Date:   Fri May 3 11:26:12 2013 -0700
      
          reverting infinity comparison
      
      commit 385f7e6b4efd1bf9b89e8d607fcb13e5b03737ea
      Author: Aaron Patterson <aaron.patterson@gmail.com>
      Date:   Fri May 3 11:23:28 2013 -0700
      
          Revert "Added ability to compare date/time with infinity"
      
          This reverts commit 38f28dca.
      
          Conflicts:
          	activesupport/CHANGELOG.md
          	activesupport/lib/active_support/core_ext/numeric/infinite_comparable.rb
          	activesupport/test/core_ext/date_ext_test.rb
          	activesupport/test/core_ext/date_time_ext_test.rb
          	activesupport/test/core_ext/numeric_ext_test.rb
          	activesupport/test/core_ext/time_ext_test.rb
          	activesupport/test/core_ext/time_with_zone_test.rb
      
      commit 0d799a188dc12b18267fc8421675729917610047
      Author: Aaron Patterson <aaron.patterson@gmail.com>
      Date:   Fri May 3 11:18:53 2013 -0700
      
          Revert "Refactor infinite comparable definition a bit"
      
          This reverts commit dd3360e0.
      
      commit 42dec90e49745bbfae546f0560b8783f6b48b074
      Author: Aaron Patterson <aaron.patterson@gmail.com>
      Date:   Fri May 3 11:18:47 2013 -0700
      
          Revert "Require 'active_support/core_ext/module/aliasing' in the infinite_comparable module"
      
          This reverts commit 7003e71c.
      4c242e6d
  27. 25 2月, 2013 1 次提交
  28. 22 2月, 2013 1 次提交
  29. 23 1月, 2013 1 次提交
  30. 21 1月, 2013 1 次提交
    • A
      Standardise the return value of `to_time` · b79adc43
      Andrew White 提交于
      This commit standardises the return value of `to_time` to an instance
      of `Time` in the local system timezone, matching the Ruby core and
      standard library behavior.
      
      The default form for `String#to_time` has been changed from :utc to
      :local but research seems to suggest the latter is the more common form.
      
      Also fix an edge condition with `String#to_time` where the string has
      a timezone offset in it and the mode is :local. e.g:
      
        # Before:
        >> "2000-01-01 00:00:00 -0500".to_time(:local)
        => 2000-01-01 05:00:00 -0500
      
        # After:
        >> "2000-01-01 00:00:00 -0500".to_time(:local)
        => 2000-01-01 00:00:00 -0500
      
      Closes #2453
      b79adc43
  31. 04 1月, 2013 2 次提交
    • R
      Remove assert_nothing_raised · 59e0c262
      Rafael Mendonça França 提交于
      59e0c262
    • B
      Added ability to compare date/time with infinity · 38f28dca
      bUg 提交于
      Date, DateTime, Time and TimeWithZone can now be compared to infinity,
        so it's now possible to create ranges with one infinite bound and
        date/time object as another bound.
      
        Ex.: @range = Range.new(Date.today, Float::INFINITY)
      
      Also it's possible to check inclusion of date/time in range with
        conversion.
      
        Ex.: @range.include?(Time.now + 1.year) # => true
             @range.include?(DateTime.now + 1.year) # => true
      
      Ability to create date/time ranges with infinite bound is required
        for handling postgresql range types.
      38f28dca
  32. 11 12月, 2012 1 次提交
    • A
      Deprecate obsolete Time to DateTime fallback methods · 48583f8b
      Andrew White 提交于
      The Time.time_with_datetime_fallback, Time.utc_time and Time.local_time
      methods were added to handle the limitations of Ruby's native Time
      implementation. Those limitations no longer apply so we are deprecating
      them in 4.0 and they will be removed in 4.1.
      48583f8b
  33. 29 11月, 2012 1 次提交
  34. 05 8月, 2012 1 次提交
    • P
      Refactored common date and time calculations. · b530fd10
      Pan Thomakos 提交于
      * Added the `DateAndTime::Calculations` module that is included in Time
        and Date. It houses common calculations to reduce duplicated code.
      * Simplified and cleaned-up the calculation code.
      * Removed duplication in tests by adding a behavior module for shared
        tests. I also added some missing tests.
      b530fd10
  35. 02 7月, 2012 1 次提交
    • A
      Improve performance of DateTime#seconds_since_unix_epoch · 822c858a
      Andrew White 提交于
      Calculate the seconds since the UNIX epoch using the difference in
      Julian day numbers from the epoch date. By reducing the Rational math
      to just the offset component this gives a significant improvement.
      
      Benchmark:
      
      Calculating --------------------------------------------
             new     27733 i/100ms
         current     15031 i/100ms
             new     27737 i/100ms
         current     15549 i/100ms
      --------------------------------------------------------
             new   548182.1 (±0.9%) i/s - 2745567 in 5.008943s
         current   216380.9 (±1.6%) i/s - 1082232 in 5.002781s
             new   510281.9 (±1.2%) i/s - 2551804 in 5.001525s
         current   219858.3 (±1.8%) i/s - 1103979 in 5.023039s
      822c858a