gpt4 book ai didi

ruby-on-rails - 为什么介于两者之间? ruby 中 Date 和 DateTime 的工作方式不同?

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:47 25 4
gpt4 key购买 nike

doc说:

between?(min, max) public

Returns true if the current object’s time is within the specified min and max time.

在 ruby 中:

>> DateTime.now.between?(DateTime.now, DateTime.now+1)
=> false
>> Date.today.between?(Date.today, Date.today+1)
=> true

通过使用 .current在 Rails 中,差异变得更加明显,因为您特别假设此方法在 DateTime 上会有类似的行为。和 Date :

>> DateTime.current.between?(DateTime.current, DateTime.current+1)
=> false
>> Date.current.between?(Date.current, Date.current+1)
=> true

这是故意的行为吗?如果是这样,为什么?处理 min 时的行为似乎很奇怪区间的边缘是没有异质性的。特别是考虑到 max部分是特殊的:

>> DateTime.now.between?(DateTime.now-1, DateTime.now)
=> true
>> Date.today.between?(Date.today-1, Date.today)
=> true

最佳答案

让我们启动 irb 并运行这些代码:

"#{DateTime.now.inspect} \n #{DateTime.now.inspect}"

结果会是这样的:

#<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)>

如您所见,以纳秒为单位存在差异 (373353553n < 373449152n)

假设 difference 等于“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?(Now+x-1.second, Now+x+x) => true

关于ruby-on-rails - 为什么介于两者之间? ruby 中 Date 和 DateTime 的工作方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42946378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com