javascript - 使用 moment.js 的 dd-MM-yyyy 日期格式

标签 javascript jquery datepicker momentjs

希望在使用 moment.js 添加月份后获得像 12-September-2017 这样的日期格式。 我正在使用 datepicker 作为日期字段。

当前输出为Th-10-yyyy

此外,收到警告

moment.min.js:6 Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.

$(document).on("change", "#inputmonthadded", function (evt) {

    var input_value_inputstartdate = $('#inputstartdate').val();
    var input_value_inputmonthpurchased = $('#inputmonthpurchased').val();
    var input_value_inputmonthadded = $('#inputmonthadded').val();

    if (typeof input_value_inputstartdate != 'undefined' && input_value_inputstartdate) {

        var inputstartdate = moment(input_value_inputstartdate);

        var portalexpdate = inputstartdate.add(input_value_inputmonthadded, 'months');

        var formatedportalexpdate = portalexpdate.format('dd-MM-yyyy');

        $('#inputportalexpirydate').val(formatedportalexpdate);

    }
    else {

        $('#inputportalexpirydate').val('');
    }

});

最佳答案

你必须使用:

var formatedportalexpdate = portalexpdate.format('DD-MMMM-YYYY');

format 中所述文档。

Moment 标记区分大小写,dd 代表星期几,而 DD 代表月份中的某天,使用 MMMM 来表示获取完整月份名称和 YYYY 以获取 4 位数年份。

使用moment(String, String)而不是 moment(input_value_inputstartdate) 来避免解析 input_value_inputstartdate 时的弃用警告,在您的情况下,您可以执行以下操作:

var inputstartdate = moment(input_value_inputstartdate, 'DD-MMMM-YYYY');

完整的代码可能如下所示:

$(document).on("change", "#inputmonthadded", function (evt) {
  var input_value_inputstartdate = $('#inputstartdate').val();
  var input_value_inputmonthpurchased = $('#inputmonthpurchased').val();
  var input_value_inputmonthadded = $('#inputmonthadded').val();

  if (typeof input_value_inputstartdate != 'undefined' && input_value_inputstartdate) {
    var inputstartdate = moment(input_value_inputstartdate, 'DD-MMMM-YYYY');
    var portalexpdate = inputstartdate.add(input_value_inputmonthadded, 'months');
    var formatedportalexpdate = portalexpdate.format('DD-MMMM-YYYY');
    $('#inputportalexpirydate').val(formatedportalexpdate);
  }
  else {
     $('#inputportalexpirydate').val('');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

<input type="number" id="inputmonthadded">
<input type="text" id="inputstartdate" value="12-September-2017" readonly>
<input type="text" id="inputportalexpirydate" readonly>
<input type="text" id="inputmonthpurchased">

关于javascript - 使用 moment.js 的 dd-MM-yyyy 日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46185018/

相关文章:

angularjs - Angular Bootstrap Datepicker 更改月份事件

javascript - 从 javascript 生成 Angular 指令的 html 绑定(bind)模板

javascript - jQuery UI 错误 - f.getClientRects 不是函数

javascript - 如何重置 HTML 选择

styles - 剑道 UI - 占位符 - 样式

jquery - 如何从 dev.jtsage 正确启用 beforeToday DateBox 选项

javascript - Kendo UI 与 AngularJs : How to bind data on textbox fields when user select row in a grid

javascript - JavaScript 中小数点后 3 位

javascript - 为什么我不能将 AdjecentHTML 插入文本区域?

javascript - 我怎样才能在不移动下面的元素的情况下注入(inject)一堆图像