Moment.js 中的弃用警告 - 不是公认的 ISO 格式

新手上路,请多包涵

我收到一条警告,提示提供给 moment 的值不是可识别的 ISO 格式。我今天用 moment 函数更改了我的变量,但它仍然不起作用。

这是警告错误:

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

论据:

[0] _isAMomentObject: true, _isUTC: true, _useUTC: true, _l: undefined, _i: 2016-9-26 19:30, _f: undefined, _strict: undefined, _locale: [object Object]

var entryDate = new Date();
var currentDate = entryDate.getDate();

function between(x, min, max) {
  return x.valueOf() >= min.valueOf() && x < max.valueOf();
}

$('#custom1').change(function () {
  if ($('#custom1 :selected').val() == 'AU') {
    var keyword = '';

    var aus1_s = moment.tz('2016-9-26 19:30', 'Australia/Sydney');
    var aus2_s = moment.tz('2016-10-2 19:30', 'Australia/Sydney');
    var aus3_s = moment.tz('2016-10-9 19:30', 'Australia/Sydney');
    var aus4_s = moment.tz('2016-10-16 19:30', 'Australia/Sydney');
    var aus5_s = moment.tz('2016-10-23 19:30', 'Australia/Sydney');
    var aus6_s = moment.tz('2016-10-30 19:30', 'Australia/Sydney');
    var aus6_e = moment.tz('2016-11-5 19:30', 'Australia/Sydney');
  } else if ($('#custom1 :selected').val() == 'NZ') {
    var aus1_s = moment.tz('2016-9-28 20:30', 'Pacific/Auckland');
    var aus2_s = moment.tz('2016-10-4 20:30', 'Pacific/Auckland');
    var aus3_s = moment.tz('2016-10-11 20:30', 'Pacific/Auckland');
    var aus4_s = moment.tz('2016-10-18 20:30', 'Pacific/Auckland');
    var aus5_s = moment.tz('2016-10-25 20:30', 'Pacific/Auckland');
    var aus6_s = moment.tz('2016-11-2 20:30', 'Pacific/Auckland');
    var aus6_e = moment.tz('2016-11-9 20:30', 'Pacific/Auckland');
  } else {
    $('#entryEquals').val('');
    return false;
  }

  var today = moment();

  switch (true) {
    case between(today, aus1_s, aus2_s):
      keyword = 'RElYT04=';
      break;

    case between(today, aus2_s, aus3_s):
      keyword = 'QlJJREU=';
      break;

    case between(today, aus3_s, aus4_s):
      keyword = 'U1lETkVZ';
      break;

    case between(today, aus4_s, aus5_s):
      keyword = 'R1JPT00=';
      break;

    case between(today, aus5_s, aus6_s):
      keyword = 'V0VERElORw==';
      break;

    case between(today, aus6_s, aus6_e):
      keyword = 'VExD';
      break;

    default:
      $('#entryEquals').val('');
      break;
  }

  $('#entryEquals').val(keyword);
});

原文由 Jemai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

查看他们所有很棒的文档!

这是他们讨论 警告信息 的地方。

字符串 + 格式

警告:浏览器对解析字符串的支持不一致。因为没有关于应该支持哪些格式的规范,所以在某些浏览器中有效的内容在其他浏览器中无效。

对于解析除 ISO 8601 字符串以外的任何内容的一致结果,您应该使用 String + Format

 moment("12-25-1995", "MM-DD-YYYY");

字符串 + 格式(多种格式)

如果您有不止一种格式,请查看他们的 String + Formats (带有“s”)。

如果您不知道输入字符串的确切格式,但知道它可能是众多格式之一,则可以使用格式数组。

 moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);

请查看文档以获取更具体的内容。

时区

Checkout Parsing in Zone ,时区的等效文档。

moment.tz 构造函数采用与 moment 构造函数相同的所有参数,但使用最后一个参数作为时区标识符。

 var b = moment.tz("May 12th 2014 8PM", "MMM Do YYYY hA", "America/Toronto");

编辑

//...
 var dateFormat = "YYYY-MD H:m"; //<-------- This part will get rid of the warning.
 var aus1_s, aus2_s, aus3_s, aus4_s, aus5_s, aus6_s, aus6_e;
 if ($("#custom1 :selected").val() == "AU" ) {
 var region = 'Australia/Sydney';

 aus1_s = moment.tz('2016-9-26 19:30', dateFormat, region);
 aus2_s = moment.tz('2016-10-2 19:30', dateFormat, region);
 aus3_s = moment.tz('2016-10-9 19:30', dateFormat, region);
 aus4_s = moment.tz('2016-10-16 19:30', dateFormat, region);
 aus5_s = moment.tz('2016-10-23 19:30', dateFormat, region);
 aus6_s = moment.tz('2016-10-30 19:30', dateFormat, region);
 aus6_e = moment.tz('2016-11-5 19:30', dateFormat, region);
 } else if ($("#custom1 :selected").val() == "NZ" ) {
 var region = 'Pacific/Auckland';

 aus1_s = moment.tz('2016-9-28 20:30', dateFormat, region);
 aus2_s = moment.tz('2016-10-4 20:30', dateFormat, region);
 aus3_s = moment.tz('2016-10-11 20:30', dateFormat, region);
 aus4_s = moment.tz('2016-10-18 20:30', dateFormat, region);
 aus5_s = moment.tz('2016-10-25 20:30', dateFormat, region);
 aus6_s = moment.tz('2016-11-2 20:30', dateFormat, region);
 aus6_e = moment.tz('2016-11-9 20:30', dateFormat, region);
 }
 //...

原文由 christo8989 发布,翻译遵循 CC BY-SA 4.0 许可协议

这样做对我有用:

 moment(new Date("27/04/2016")).format

原文由 Jigar Bhatt 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题