从jquery datepicker计算日期

时间:2014-05-15 09:53:11

标签: javascript jquery jquery-ui datepicker

我正在从jquery datepicker计算年龄。但只有日期为(mm/dd/yy)格式时才有效。我需要在dd/mm/yy中使用它。

//代码

$('#dob').datepicker({
    onSelect: function(value, ui) {
        var today = new Date(), 
            dob = new Date(value), 
            age = new Date(today - dob).getFullYear() - 1970;

        $('#age').text(age);
    },
    maxDate: '+0d',
    yearRange: '1920:2010',
    changeMonth: true,
    changeYear: true
});

如果我尝试在属性中设置dateFormat: 'mm/dd/yy',这将不起作用。 有什么帮助吗?

4 个答案:

答案 0 :(得分:4)

Demo Fiddle mm/dd/yy Demo Fiddle dd/mm/yy

的jQuery

onSelect: function (value, ui) {
    var today = new Date();
    var format = value.split("/");
    var dob = new Date(format[2], format[0], format[1]);
    var diff = (today - dob);
    var age = Math.floor(diff / 31536000000);
    $('#age').text(age);
},

Reference

希望它有所帮助......

答案 1 :(得分:2)

试试这个: http://jsfiddle.net/lotusgodkk/GCu2D/120/

JS:

$('#dob').datepicker({
onSelect: function(value, ui) {
    console.log(ui.selectedYear)
    var today = new Date(), 
        dob = new Date(value), 
        age = ui.selectedYear - 1970; //This is the update

    $('#age').text(age);
},
maxDate: '+0d',
yearRange: '1920:2010',
changeMonth: true,
changeYear: true,
});

如果您在控制台中检查ui对象,则会看到它分别存储年,日,月。您可以访问ui.selectedDayselectedYear。希望这会有所帮助。

答案 2 :(得分:1)

这个答案适用于所有日期,因为月份从日期函数中的0开始。日期格式(dd-mm-yy)。

var now= new Date();
var year= now.getFullYear();
$('#dob').datepicker({
    onSelect: function (value, ui) {
        var today = new Date();
        console.log(today.getFullYear());
        var format = value.split("-");
        console.log(format[2]);

        var dob = new Date(format[2], format[1]-1, format[0]);
        console.log(dob);
        var diff = (today - dob);
        var age = Math.floor(diff / 31536000000);
        $('#age').text(age);
    },

    dateFormat: 'dd-mm-yy',
    maxDate: '+0d',
    yearRange: '1920:'+year,
    changeMonth: true,
    changeYear: true
});

答案 3 :(得分:0)

$("#dob").datepicker({        
    onSelect: function (value, ui) {
    debugger
        var today = new Date();
        var year = today.getFullYear() - ui.selectedYear;
        var month = today.getMonth() - ui.selectedMonth;
        var date = today.getDate() - ui.selectedDay;


        if ((year == 0 && month == 0 && date < 0) || (year == 0 && month < 0) || (year < 0)) {
            $("#lbl6").show();
            $("#age").val("");

        } else if ((year == 0) || (year > 0 && month == 0 && date >= 0) || (year > 0 && month > 0)) {
            $("#age").val(year);

        } else if ((year > 0 && month == 0 && date < 0) || (year > 0 && month < 0)) {
            $("#age").val(year - 1);

        }
    },
    dateFormat: 'dd M y',
    changeMonth: true,
    changeYear: true,
    yearRange: '1900:2020'
});