【问题标题】:dd-MM-yyyy date format with moment.js带有 moment.js 的 dd-MM-yyyy 日期格式
【发布时间】:2017-09-12 20:43:02
【问题描述】:

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

当前输出为Th-10-yyyy

另外,收到警告

moment.min.js:6 弃用警告:提供的值不是可识别的 RFC2822 或 ISO 格式。 moment 构造回退到 js Date(),这在所有浏览器和版本中并不可靠。不鼓励使用非 RFC2822/ISO 日期格式,并将在即将发布的主要版本中删除。更多信息请参考http://momentjs.com/guides/#/warnings/js-date/

$(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('');
    }

});

【问题讨论】:

  • input_value_inputstartdate的值是多少?
  • input_value_inputstartdate 的值 = 2017 年 9 月 12 日

标签: javascript jquery datepicker momentjs


【解决方案1】:

你必须使用:

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

format 文档中所述。

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

在解析input_value_inputstartdate 时使用moment(String, String) 而不是moment(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">

【讨论】:

【解决方案2】:

您需要遵循时刻的格式样式:https://momentjs.com/docs/#/displaying/

因此:format("D-MMMM-YYYY")

注意:使用 DD 将附加零,例如 01、02、03,而 D 将使用单个值,例如 1、2、3。

【讨论】:

    【解决方案3】:

    您需要将输入格式指定为第二个参数

    var inputstartdate = moment(input_value_inputstartdate, "dd-MM-yyyy");
    

    https://momentjs.com/docs/#/parsing/

    【讨论】:

      猜你喜欢
      • 2015-07-03
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多