我有两个字段。一个用于person_start_date,另一个用于person_end_date。两者都有三个单独的字段,分别为年,月,日。我想验证像人员结束日期>人员开始日期。提前谢谢。
html.erb
<%= datetime_select :person_start_date %>
<select id="person_start_date_1i" name="person[start_date(1i)]"> ... </select>
<select id="person_start_date_2i" name="person[start_date(2i)]"> ... </select>
<select id="person_start_date_3i" name="person[start_date(3i)]"> ... </select>
html.erb
<%= datetime_select :person_end_date %>
<select id="person_end_date_1i" name="person[end_date(1i)]"> ... </select>
<select id="person_end_date_2i" name="person[end_date(2i)]"> ... </select>
<select id="person_end_date_3i" name="person[end_date(3i)]"> ... </select>
答案 0 :(得分:5)
这是一个建议:
var startDate = new Date(
$('#person_start_date_1i').val(),
$('#person_start_date_2i').val() - 1,
$('#person_start_date_3i').val()
);
var endDate = new Date(
$('#person_end_date_1i').val(),
$('#person_end_date_2i').val() - 1,
$('#person_end_date_3i').val()
);
if (endDate > startDate) {
// do something
}
答案 1 :(得分:4)
如果您将年,月,日值作为数字(可以是类型编号或字符串),则可以创建日期,如:
var dStart = new Date(year, --month, day);
请注意,对于日历月1,javascript月号为0(零),因为月份为零索引,因此--month
。
您可以直接比较两个日期:
if (dEnd < dStart) {
// end is before start
}
答案 2 :(得分:2)
我认为这些链接中的任何一个都应该回答您的问题:
validate end date equal to greater than start date
Validate that end date is greater than start date with jQuery
更新:
此链接完全描述了您的问题并为其提供了一个很好的解决方案
答案 3 :(得分:1)
不能比这更简单..
var date1 = Date.parse("2012-11-18");
var date2 = Date.parse("2011-11-18");
if (date1 > date2) {
alert ("Error!");
}
else{
alert("correct")
}
答案 4 :(得分:0)
重要的一点是,由于使用了日期格式,这种比较失败了。 它主要使用mm-dd-yyyy格式,因为PC具有相同的区域设置,看起来像是正确的格式,但事实并非如此。 为了兼容性,各种语言/平台以年 - 月 - 日期格式保留日期。 因此,最好明确地将日期转换为yyyy-mm-dd格式并进行转换,特别是当您使用dd-mm-yyy(Aus或欧洲格式)时。