首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Moment.js中的弃用警告--不采用公认的ISO格式

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

Stack Overflow用户
提问于 2016-10-11 02:22:20
回答 17查看 303.7K关注 0票数 245

我得到一个警告,一个值提供的瞬间不是一个公认的ISO格式。我今天用矩函数改变了我的变量,但它仍然不起作用。

以下是警告错误:

弃用警告:提供的值不符合公认的ISO格式。构造回到js Date(),而js Date()并不是所有浏览器和版本都可靠的。非ISO日期格式是不鼓励的,并将在即将推出的主要版本中删除。请参考http://momentjs.com/guides/#/warnings/js-date/获得更多信息。论据:_isAMomentObject: true,_isUTC: true,_useUTC: true,_l: undefined,_i: 2016-9-26 19:30,_f: undefined,_strict: undefined,_locale: Object

代码语言:javascript
复制
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);
});
EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2016-10-11 22:33:46

看看他们所有令人敬畏的文档!

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

字符串+格式

警告:浏览器对解析字符串的支持不一致。因为没有规范说明应该支持哪种格式,所以在某些浏览器中工作的内容在其他浏览器中是行不通的。 为了获得一致的结果解析除了ISO8601字符串之外的任何其他内容,您应该使用字符串+格式

代码语言:javascript
复制
moment("12-25-1995", "MM-DD-YYYY");

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

如果您有多个格式,请查看他们的字符串+格式 (带有's')。

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

代码语言:javascript
复制
moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);

请查看文档以了解更具体的内容。

时区

签出区域分析,这是用于时区的等效文档。

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

代码语言:javascript
复制
var b = moment.tz("May 12th 2014 8PM", "MMM Do YYYY hA", "America/Toronto");

编辑

代码语言:javascript
复制
//...
var dateFormat = "YYYY-M-D 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);
}
//...
票数 253
EN

Stack Overflow用户

发布于 2018-07-09 05:53:47

这样做对我有用:

代码语言:javascript
复制
moment(new Date("27/04/2016")).format
票数 98
EN

Stack Overflow用户

发布于 2018-08-04 21:10:09

在你的功能中使用这样的时刻

代码语言:javascript
复制
let date = "01/11/1992"  // string
moment(new Date(date)).format('MM/DD/YYYY')
票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39969570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档