【问题标题】:Calculate date from jquery datepicker从 jquery datepicker 计算日期
【发布时间】:2014-05-15 09:53:10
【问题描述】:

我正在从 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',这将不起作用。 有什么帮助吗?

【问题讨论】:

  • jQuery 中的日期对象只解析mm/dd/yyyy 格式的字符串。如果在任何其他格式中,您需要将日期拆分为日、月和年,然后以 m/d/y 格式重新创建它。

标签: javascript jquery jquery-ui datepicker


【解决方案1】:

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

希望对您有所帮助....

【讨论】:

  • 一个月如何计算?年龄因月份而异。
【解决方案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 一样访问它们。希望这会有所帮助。

【讨论】:

    【解决方案3】:

    此答案适用于所有日期,因为月份从日期函数中的 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
    });
    

    【讨论】:

      【解决方案4】:
      $("#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'
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-24
        • 1970-01-01
        • 2015-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多