我有2个日期字段,我想比较它们的值。问题在于,我需要以DD/mm/yyyy格式和JS日期对象为DD/mm/yyyy。如何更改日期对象格式以接收DD/mm/yyyy并将它们与此格式进行比较?
这是我到目前为止尝试的...
$('#date_customFrom').datepicker({
format: "dd/mm/yyyy"
});
$('#date_customTo').datepicker({
format: "dd/mm/yyyy"
});
$('.submit').on('click', function() {
var start_date = $("input[name='date_customFrom']").val().split("/");
var end_date = $("input[name='date_customTo']").val().split("/");
var new_date_start = new Date(start_date[2], start_date[1] - 1,
start_date[0]);
var new_date_end = new Date(end_date[2], end_date[1] - 1, end_date[0]);
console.log(new_date_start);
console.log(new_date_end);
});
小提琴
var dd = new_date_start.getDate();
var mm = new_date_start.getMonth() + 1;//January is 0!
var yyyy = new_date_start.getFullYear();
if (dd < 10) { dd = '0' + dd }
if (mm < 10) { mm = '0' + mm }
var res_START= dd + '/' + mm + '/' + yyyy;
console.log(res_START);
尝试此
您需要使用Moment.js
这里是doc
var momDt = moment('10.12.2016', 'DD/MM/YYYY');
您可以将日期对象与基本关系运算符进行比较。
使用 +
或 parseInt
;
+(start_date[2])
Number(start_date[2])
parseInt(start_date[2], 10)
或映射号码构造函数
var start_date = $("input[name='date_customFrom']").val().split("/").map(Number);
new Date(start_date[2], start_date[1] - 1, start_date[0]);
使用<
,<=
,>
,>=
立即比较。
var start, end;
start = new Date(2016, 11, 5);
end = new Date(2016, 11, 4);
console.log(start, end, start < end)
start = new Date(2016, 11, 3);
end = new Date(2016, 11, 4);
console.log(start, end, start < end)
所有的拳头,您无需施放日期... datepicker已经可以给您日期:
var start_date = $("#date_customFrom").datepicker('getDate');
var end_date = $("#date_customTo").datepicker('getDate');
第二,日期的正确格式是日期选择器为
$('#date_customFrom').datepicker({
dateFormat: "dd/mm/yyyy"
});
检查整个格式列表
http://api.jqueryui.com/datepicker/#utility-formatdate
第三,比较只是使用关系比较
if (start_date > end_date) {
}
您可以创建格式函数:
function formatDate(date, search, replacement)
{
var target = date.toISOString().slice(0, 10);
return target.split(search).join(replacement);
}
并使用它:
formatDate(new_date_start, "-", "/")
这是您更新的小提琴
,但我同意asdf_enel_hak
的评论,即moment.js
对您来说是更好的解决方案。
更新
我刚刚意识到以上不会考虑您的时区,因此这是一个更新的功能:
function formatDate(date, search, replacement)
{
var target = new Date(date);
target.setMinutes(date.getMinutes() - date.getTimezoneOffset());
target = target.toJSON().slice(0, 10);
return target.split(search).join(replacement);
}
和新小提琴