【问题标题】:Extract month from jquery datepicker从jquery datepicker中提取月份
【发布时间】:2011-07-18 12:53:59
【问题描述】:

我有一个 jquery datepicker,它可以格式化 dd/mm/yyyy 中的日期。当有人输入日期、选择日期并加载时,我需要显示月份名称。我正在努力争取这个月。 myDate 是附加到日期选择器的文本框。我有这个:

var date = new Date($("#myDate").val());
alert(date.getDate());
alert(date.getMonth());
alert(date.getDay());
alert(date.getYear());

当我以 2011 年 7 月 18 日的日期运行它时,我得到一个月的 5 个,一天的 4 个,日期的 7 个和一年的 112 个,这很奇怪。我究竟做错了什么?我需要做的就是将月份标签动态更改为使用日期选择器选择/输入的月份,即 7 月...

【问题讨论】:

    标签: jquery jquery-ui-datepicker


    【解决方案1】:

    要从 datepicker 获取日期,您应该使用 $("#myDate").datepicker("getDate")。虽然您目前正在构建一个 JavaScript Date 对象,但它可能会以错误的方式解释 .val()。

    【讨论】:

    • 谢谢,我如何获得月份名称?我可以直接从日期选择器中获取它,还是我需要为 7 月获取 6,然后以某种方式获取月份名称?
    • 欢迎。您可以使用预定义名称的数组(注意 JavaScript 月份是从零开始的),或者将 altField 和 altFieldFormat 与日期选择器一起使用,并使用月份名称设置替代字段并稍后提取 (Datepicker Docs)
    • 有没有办法直接从月份下拉选择值中获取文本?它在那里,我似乎无法到达它
    • @newbie_86,对不起,我不明白你到底想得到什么。是选择日期后的文本字段吗?
    【解决方案2】:

    使用

    $('#myDate').datepicker('getDate')
    

    将以更安全的方式为您获取 JavaScript 日期对象。此外,getMonth() 将返回索引为零的月份,因此 July 将返回为“6”。要返回全年,您应该使用:.getFullYear()

    javascript“new Date()”可能没有以正确的日期格式解析它。如果您正确设置了 datepicker 的日期形式,那么当您使用它的 'getDate' 方法时,小部件将为您完成工作。

    因此,您的代码将变为:

    var date = $("#myDate").datepicker('getDate');
    alert(date.getDate());         // Day of the month
    alert(date.getMonth());        // Month with a zero index
    alert(date.getDay());          // Day of the week
    alert(date.getFullYear());     // The "full" year, e.g. 2011
    

    // 更新了选择列表的解决方案

    从下拉列表中选择正确的值很大程度上取决于您设置值的方式。即如果值是:

    <select id="MySelect">
      <option value="1">Jan</option>
    </select>
    

    那么你可以这样做:

    $('#MySelect').val((date.getMonth() + 1));
    

    这将选择指定的月份。但是,如果您的值是月份名称的某种变体,即:

    <select id="MySelect">
      <option value="Jan">Jan</option>
    </select>
    

    然后你需要一个函数来将月份编号映射到它的名称,例如:

    var months = ['Jan', 'Feb', 'Mar', ...etc }
    
    function getMonthShortName(month) {
        return months[month];
    }
    
    $('#MySelect').val(getMonthShortName(date.getMonth()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多