Mag*_*gne 3 ruby datetime ruby-on-rails date
该文档说:
介于?(min,max)之间
如果当前对象的时间在指定的最小和最大时间内,则返回true.
在Ruby中:
>> DateTime.now.between?(DateTime.now, DateTime.now+1)
=> false
>> Date.today.between?(Date.today, Date.today+1)
=> true
Run Code Online (Sandbox Code Playgroud)
通过使用.currentRails中的差异变得更加明显,因为你会特别是承担这一方法将有相似的行为上DateTime和Date:
>> DateTime.current.between?(DateTime.current, DateTime.current+1)
=> false
>> Date.current.between?(Date.current, Date.current+1)
=> true
Run Code Online (Sandbox Code Playgroud)
这是故意的行为吗?如果是这样,为什么?处理min区间边缘时的行为并不是特殊的,这似乎很奇怪.特别是当考虑到该max部分是特殊的时:
>> DateTime.now.between?(DateTime.now-1, DateTime.now)
=> true
>> Date.today.between?(Date.today-1, Date.today)
=> true
Run Code Online (Sandbox Code Playgroud)
小智 5
让我们启动irb并运行这些代码:
"#{DateTime.now.inspect} \n #{DateTime.now.inspect}"
Run Code Online (Sandbox Code Playgroud)
结果将是这样的:
#<DateTime: 2017-03-22T11:42:28+03:00 ((2457835j,31348s,373353553n),+10800s,2299161j)>
#<DateTime: 2017-03-22T11:42:28+03:00 ((2457835j,31348s,373449152n),+10800s,2299161j)>
Run Code Online (Sandbox Code Playgroud)
如你所见,纳秒之间存在差异(373353553n <373449152n)
让我们假设差异等于'x',而DateTime.now等于'Now',然后:
1)DateTime.now.between?(DateTime.now,DateTime.now + 1.second)
Now.between?(Now + x,Now + x + x + 1.second)=> false
2)DateTime.now.between?(DateTime.now-1,DateTime.now)
Now.between?(现在+ x-1.second,Now + x + x)=> true
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |