Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails中删除日期时间的毫秒数?_Ruby On Rails_Ruby On Rails 3_Datetime - Fatal编程技术网

Ruby on rails 如何在rails中删除日期时间的毫秒数?

Ruby on rails 如何在rails中删除日期时间的毫秒数?,ruby-on-rails,ruby-on-rails-3,datetime,Ruby On Rails,Ruby On Rails 3,Datetime,我必须比较rails中的日期以获得该日期之后的值,我已将日期发送为“2013-03-04T06:26:25Z”,但实际上数据库中的记录包含的日期如下2013-03-04 06:26:25.817149,因此当我检查该日期时,它也会返回该记录,但我需要该日期之后的记录。如何从数据库中删除毫秒?请帮帮我。我也有类似的问题 在将时间对象发送到数据库之前,按以下方式更新它: time.change(:usec => 0) 我也有这个问题,但是当我应用更改时,它不会影响我的时间对象的微秒 请注意,

我必须比较rails中的日期以获得该日期之后的值,我已将日期发送为
“2013-03-04T06:26:25Z”
,但实际上数据库中的记录包含的日期如下
2013-03-04 06:26:25.817149
,因此当我检查该日期时,它也会返回该记录,但我需要该日期之后的记录。如何从数据库中删除毫秒?请帮帮我。

我也有类似的问题

在将时间对象发送到数据库之前,按以下方式更新它:

time.change(:usec => 0)

我也有这个问题,但是当我应用更改时,它不会影响我的时间对象的微秒

请注意,
:usec
键(至少目前)仅适用于该方法,不适用于该方法

DateTime#change
方法忽略它不接受的键,因此除非您进一步检查对象(例如使用
DateTime#rfc3339(9)
),否则无法判断您尝试的微秒更改是否有效


因此,在尝试此更改之前,请确保您使用的是
Time
对象,而不是
DateTime
对象。

由于ruby 1.9,您可以使用
round

t = Time.now.round
t.usec # => 0

您使用的是哪个数据库?我使用的是postgres…或者如果您知道您用于搜索的时间从来没有毫秒精度,只需改进您的查询和记录查询
=time+1.second
。我们不能指定要保存的格式而不是这样做吗?要保存的格式在您的数据库中定义,可以是DATE,日期时间等。您的ORM将为您将日期转换为正确的格式。我不知道postgres,所以也许您可以将类型更改为不太精确的类型。不,我是想在配置中的某个位置设置strftime(%H%M%S)之类的内容,以便将日期保存为指定格式。您不必处理时间格式,因为ORM会这样做。请参阅postgres中的数据类型。微秒很重要,尤其是在测试时。数据库可能会将微秒截断为预定义的精度,例如Postgres将其设置为6。因此,从数据库读取的值与它在Ruby land中返回的值不匹配,您会得到一个不匹配的值,如:
-:completed_at=>2018-07-30 12:27:06.544967008+0000,+:completed_at=>2018-07-30 12:27:06.544967000+0000
。最简单的方法是删除我们将要存储的值中的微秒。然后匹配就可以了,我们不必解决这个截断问题。
.round
round,它不仅仅是删除毫秒。因此,在OP示例中,您将得到
06:26:25!=06:26:26