将jQuery日期与Rails日期进行比较

时间:2015-10-27 23:52:09

标签: javascript jquery ruby-on-rails ruby date

我有一个rails生成的日期和一个jQuery生成的日期。

导轨日期打印如下:2002-10-27

并且jQuery日期打印如下:Tue Aug 14 2001 00:00:00 GMT-0500 (CDT)

我想检查jQuery日期是否大于或小于rails日期。但无论日期如何,jQuery日期总是被解释为大于rails日期。

为什么会这样,我怎样才能成功比较两个日期?

var year = 2001
var month = 9
month --
var day = 14
var date = new Date(year, month, day);
<% @date = Date.today - 18.years %>
if( date > <%= @date %> ) {
  //this code is always executed, no matter what dates I choose
}

更新

实际上我只是弄清楚问题是它只允许1969年之前的日期。我打算让代码只允许18岁以上的日期。有谁知道为什么会有差异?

更新2:

我在我的js控制台和rails控制台上测试了2000年10月5日的时间输出,它们给出了相同的前六位数字,但是js控制台增加了三个零。

var year = 2000
var month = 10
month --
var day = 5
var date = new Date(year, month, day);
date.getTime();
=> 970722000000


Date.new(2000,10,5).to_time.to_i
=> 970722000 

5 个答案:

答案 0 :(得分:4)

事实证明问题是js控制台以毫秒为单位打印时间,这就是我获得973404000000而不是rails控制台中的973404000的原因。

我所要做的就是将js时间除以1000,并将js时间与轨道时间进行比较,效果非常好。

var year = 2000
var month = 10
month --
var day = 5
var date = (new Date(year, month, day).getTime() / 1000);
date
=> 970722000


Date.new(2000,10,5).to_time.to_i
=> 970722000 

答案 1 :(得分:3)

Jquery Date的用户日期格式模式,用于根据ruby日期更改日期格式,或者第二个选项是使用strftime根据jquery转换ruby日期格式。

答案 2 :(得分:1)

您可以尝试将它们转换为unix时间戳并进行比较。如果你不关心时间,只关心日期,它应该有效。

var year = 2001
var month = 9
var day = 14
var date = new Date(year, month, day);
<% @date = Date.today - 18.years %>
if ( date.getTime() > <%= @date.to_time.to_i %>) {
  // do something
}

答案 3 :(得分:1)

我使用像Moment.JS这样的库来处理客户端的日期解析需求。然后以ISO8601等标准格式发送服务器,以确保您在误导方面没有任何问题。

大纪元时间也会奏效,但正如您所见,您必须承担确保他们处于同一单位的负担。

答案 4 :(得分:0)

为了比较2个日期,我可以使用moment.js

使用ur rails date创建一个时刻日期。与你的jquery日期一样。

你现在可以轻松比较2个日期。

如果您需要帮助,请参阅此帖子:moment-js-date-time-comparison