0

我有 2 个日期字段,我想比较它们的值。问题是我需要日期为 dd/mm/yyyy 格式并作为 js 日期对象。如何更改日期对象格式以接收 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);

});

小提琴

4

5 回答 5

0

您可以创建格式函数:

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);
}

新的小提琴

于 2016-12-08T08:09:46.880 回答
0

您可以将 Date 对象与基本的关系运算符进行比较。

确保在拆分字符串后转换为数字,使用+or parseInt;

+(start_date[2]) 
Number(start_date[2])
parseInt(start_date[2], 10)

或拆分后映射 Number 构造函数

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)

于 2016-12-08T08:03:19.900 回答
0

首先,你不需要投射日期......日期选择器已经可以给你日期:

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) {
}
于 2016-12-08T08:08:34.573 回答
0
 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);

尝试这个

于 2016-12-08T07:59:33.947 回答
0

你需要使用 Moment.js

这是文档

var momDt = moment('10.12.2016', 'DD/MM/YYYY');
于 2016-12-08T07:59:37.213 回答