比较jQuery日期和Rails日期

Comparing jQuery date to Rails date

本文关键字:日期 Rails 比较 jQuery      更新时间:2023-09-26

我有一个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 

所以问题是js控制台以毫秒为单位打印时间,这就是为什么我得到了973404000000,而rails控制台中是973404000。

我所要做的就是把js时间除以1000,将js时间与rails时间进行比较非常有效。

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 

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

您可以尝试将它们转换为各自的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
}

我会使用Moment.JS这样的库来处理客户端的日期解析需求。然后以ISO8601等标准格式向服务器发送一些内容,以确保您在错误报告中不会遇到任何问题。

Epoch时间也会起作用,但正如你所看到的,你必须承担确保他们在同一个单位的责任。

要为我比较两个日期,你可以使用moment.js

用你的铁轨日期创建一个即时日期。对您的jquery日期执行同样的操作。

你现在可以很容易地比较这两个日期了。

如果你需要帮助,请看这篇文章:moment js日期时间比较