我需要帮助我在我的代码上收到警告,提供的值不是公认的ISO格式。我现在用时刻功能改变我的变量,但它仍然没有用。
这是警告错误
弃用警告:提供的值不是公认的ISO格式。时刻构造回落到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);
});
答案 0 :(得分:122)
查看他们所有精彩的文档!
以下是他们讨论Warning Message。
的地方警告:浏览器对解析字符串的支持不一致。因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的功能在其他浏览器中不起作用。
要解析除ISO 8601字符串以外的任何内容的一致结果,您应该使用String + Format。
moment("12-25-1995", "MM-DD-YYYY");
如果您有多种格式,请查看他们的String + Formats(使用&#39; s&#39;)。
如果你不知道输入字符串的确切格式,但知道它可能是众多格式之一,你可以使用一系列格式。
moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);
请查看文档以了解更具体的内容。
Checkout Parsing in Zone,时区的等效文档。
moment.tz构造函数接受与矩构造函数相同的所有参数,但使用最后一个参数作为时区标识符。
var b = moment.tz("May 12th 2014 8PM", "MMM Do YYYY hA", "America/Toronto");
修改强>
//...
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);
}
//...
答案 1 :(得分:17)
这样做对我有用:
moment(new Date("27/04/2016")).format
答案 2 :(得分:7)
我遇到了这个错误,因为我试图从localStorage
传递一个日期。将日期传递给新的Date
对象,然后调用.toISOString()为我做了诀窍:
const dateFromStorage = localStorage.getItem('someDate');
const date = new Date(dateFromStorage);
const momentDate = moment(date.toISOString());
这会抑制控制台中的任何警告。
答案 3 :(得分:4)
这个答案是为了更好地理解这个警告
当您使用片刻创建时间对象var today = moment();
时,会导致弃用警告。
如果这个警告对您没问题,那么我有一个更简单的方法。
请勿使用date
使用js
的{{1}}对象。例如,使用moment
获取当前日期。
或将moment()
日期对象转换为js
日期。您可以简单地指定moment
日期对象的格式。
即js
例如:
moment("js date", "js date format");
(但是你只能使用这种方法直到它被贬低,这可能会在moment("2014 04 25", "YYYY MM DD");
以后被折旧)
答案 4 :(得分:4)
像这样在您的函数中使用时刻
moment(new Date(date)).format('MM/DD/YYYY')
答案 5 :(得分:4)
您可以使用
moment(date,"currentFormat").format("requiredFormat");
当日期不是ISO格式时应使用此格式,因为它会告诉我们当前的格式是什么。
答案 6 :(得分:1)
使用moment.js解析字符串。
const date = '1231231231231' //Example String date
const parsed = moment(+date);
答案 7 :(得分:0)
在代码中添加以下行以禁止显示警告:
const moment = require('moment');
moment.suppressDeprecationWarnings = true;
答案 8 :(得分:0)
我面临类似的问题,并通过以下解决方法解决: 我的日期格式是:“ 2020年12月11日星期五,格林尼治标准时间+0500(巴基斯坦标准时间)”
let currentDate = moment(new Date('Fri Dec 11 2020 05:00:00 GMT+0500 (Pakistan Standard Time)').format('DD-MM-YYYY'); // 'Fri Dec 11 2020 05:00:00 GMT+0500 (Pakistan Standard Time)'
let output=(moment(currentDate).isSameOrAfter('07-12-2020'));
答案 9 :(得分:0)
groupBy
moment.suppressDeprecationWarnings = true;
答案 10 :(得分:0)
一个简单的答案:
# pass column names as string
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']
# make dict of dtypes
dict_dtypes = {x : 'str' for x in names}
pd.read_csv('iris.data', dtype=dict_dtypes)
答案 11 :(得分:0)
我使用 moment 将我的日期值转换为我想要的格式。 来自数据库的日期值就像
2021-06-07T22:00:00.000Z
我所做的如下:
dateNeeded = moment(dateNeeded , moment.ISO_8601).format('YYYY-MM-DD');
答案 12 :(得分:0)
就我而言,这个错误发生在
moment('2021-07-1')
正确的做法是
moment('2021-07-01')
当月/日小于10
时,需要在前面加上0
。