我有以下问题。
我从HTML表单中获取start_date和end_date,这两个日期都有效,并由引导日期选择器输入/选择。
日期的一个例子如下
start_date = 15-06-2016
end_date = 14-06-2016
我有以下代码来检查开始日期是否大于结束日期:
if (Date.parse(start_date) > Date.parse(end_date))
{
error = true;
console.log('start date is greater than end date');
}
else
{
console.log('start date is smaller than end date');
}
开始日期大于结束日期,但在我的验证中,始终是日志"开始日期小于结束日期"
我还在条件语句中尝试了以下内容,但仍然得到相同的结果:
if (new Date(start_date) > new Date(end_date))
if (start.Date > date.Date)
如果我切换">"使用"<",我仍然得到相同的结果。该语句总是执行else语句。
我认为从字符串到日期的转换可能是问题所在。
提前致谢
答案 0 :(得分:3)
Date.parse无法识别此日期格式。
console.log(Date.parse('15-06-2016'));
如果您希望识别它,则需要使用mm/dd/yyyy
格式或yyyy-mm-dd
格式。
console.log(Date.parse('06/15/2016'));
如果您想使用自定义格式,则必须实现自己的解析器(例如'-'
上的splitting)或使用moment.js等库。
console.log(moment("06-15-2016", "MM-DD-YYYY"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>
答案 1 :(得分:1)
您可以使用String.prototype.split()
,Array.prototype.reverse()
,Array.prototype.join()
,new Date()
,.getTime()
var start_date = "15-06-2016"
, end_date = "14-06-2016";
function getTime(d) {
return new Date(d.split("-").reverse().join("-")).getTime()
}
console.log(getTime(start_date) > getTime(end_date))
&#13;
答案 2 :(得分:0)
而不是
start_date = 15-06-2016
end_date = 14-06-2016
使用
var start_date = new Date('15-06-2016');
var end_date = new Date('14-06-2016');
其余代码保持不变。
答案 3 :(得分:0)
首先尝试将日期格式转换为标准JavaScript日期格式,如YYYY-MM-DD
,然后您可以将其解析为Date
对象。完成后,您可以进行如下所需的比较:
标准日期格式可在以下链接中找到:http://www.w3schools.com/js/js_date_formats.asp
var start_date = '15-06-2016';
var end_date = '14-06-2016';
//convert to standard date format like YYYY-MM-DD
start_date =
start_date.split('-')[2]+"-"+start_date.split('-')[1]+"-"+start_date.split('-')[0]
end_date =
end_date.split('-')[2]+"-"+end_date.split('-')[1]+"-"+end_date.split('-')[0]
if (Date.parse(start_date) > Date.parse(end_date))
{
error = true;
console.log('start date is greater than end date');
}
else
{
console.log('start date is smaller than end date');
}
&#13;
答案 4 :(得分:0)
您还可以通过javascript隐藏所选日期的先前日期。
HTML:
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all"><label for="from">From</label> <input type="text" id="from" name="from"/> <label for="to">to</label> <input type="text" id="to" name="to"/>
Javascript:
var dateToday = new Date(); var dates = $("#from, #to").datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
minDate: dateToday,
onSelect: function(selectedDate) {
var option = this.id == "from" ? "minDate" : "maxDate",
instance = $(this).data("datepicker"),
date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
dates.not(this).datepicker("option", option, date);
} });
这是一个有效的Demo