0

有没有一种相对简单的方法可以在英国格式的日期上使用jquery, 进行日期比较?我正在尝试检查通过日期输入字段选择的天数是否大于或等于设定的数字。不幸的是,我无法更改日期格式,需要使用.dd/mm/yy

更新:我正在使用的日期已经是英国格式dd/mm/yy- 我正在尝试将其转换为可以与当前日期进行比较的格式,以查找经过的天数。

工作解决方案:

function checkDaysElapsed (input) {

                var datePart = input.split("/");
                year = datePart[2]; // get only two digits
                month = datePart[1]; 
                day = datePart[0];

                var date1 = new Date(year,month-1,day); 

                var currentTime = new Date();
                var month2 = currentTime.getMonth();
                var day2 = currentTime.getDate();
                var year2 = currentTime.getFullYear();
                var date2 = new Date(year2,month2,day2);
                console.log(year + '/' + month + '/' + day);
                console.log(year2 + '/' + month2 + '/' + day2);

                delta = date2 - date1; 
                // delta is the difference in milliseconds 
                delta_in_days = Math.round(delta / 1000 / 60 / 60/ 24); 

                return delta_in_days;
        }
4

3 回答 3

1

获得正确格式的日期后,您还需要将其与其他日期进行比较。为此,您可能希望将日期字符串强制转换为Date()对象。

另请注意,一旦您创建了一个Date对象,实际格式就不再相关。

首先,您需要使用 string.split('/') 将日期拆分为其组件

var date1 = new Date(year,month-1,day),
var date2 = new Date(year2,month2-1,day2);
delta = date2 - date1;
// delta is the difference in milliseconds
delta_in_days = Math.round(delta / 1000 / 60 / 60/ 24);
于 2012-09-19T16:17:30.120 回答
0

使用此插件格式化日期以通过 ajax 传递给服务器以进行准确的日期比较formatDate

像这样打电话

var start = $.format.date($('#startDate').val(), "dd/MM/yyyy");
var finish= $.format.date($('#finish').val(), "dd/MM/yyyy");

$.ajax({
        cache: true,
        type: 'post',
        async: false,
        data: { start: start, finish: finish },
        url: '/controller/CheckDates',
        success: function (msg) {

            //msg will be the days

        }
    });

由于经验不准确,我已经这样做了,可能有更有效的方法

于 2012-09-19T16:08:28.350 回答
-1

这是您将日期格式设置为 dd/mm/yy 的方式:

$(function () {
    $(".datepicker").datepicker({ dateFormat: 'dd/mm/yy' });
});
于 2012-09-19T16:05:19.570 回答