我想要转换的 JSON 字符串包含 value = "YYYY-MM-DDTHH:MM:SSZ"
格式的日期值,但由于某些技术原因,我不会偏离 new Date(value)
不起作用。但是,“YYYY/MM/DD HH:MM:SS”
格式的值将起作用。
此外,使用另一种方法,将值分解为年、月、日、时、分、秒,并使用这些值创建一个新的 Date() 也是可行的。
看似更长的方法,将值分解成几个部分,如下所示:
var ymd = value.split('T')[0].split('-');
var hms = value.split('T')[1].substr(0,8).split(':');
return new Date(ymd[0], ymd[1]-1, ymd[2], hms[0], hms[1], hms[2]);
简单、看起来更简单的方法是这样的:
return new Date(value.replace(/-/g, '/').replace('T', ' ').substr(0,19));
两者都有效,但第一个看起来更复杂,但明显比单行更快。我有一个包含数百个元素的数组,每个元素都包含一个对象,该对象具有原始字符串格式的多个日期值。使用第一种更长远的方法,一切基本上都会立即返回。使用第二种单行方法时,每次返回都会有一两秒的明显停顿。
我只是好奇为什么第一种方法比第二种方法快得多。有什么想法吗?
谢谢。
最佳答案
根据https://medium.com/dailyjs/js-regexp-fast-and-slow-d29d6b77b06
String.split() 的速度比 Regex 快 40 倍,除非满足某些条件导致 Regex 在内部调用 string.split()。
关于javascript - 为什么一种看似较长的字符串转 JavaScript 日期方法比另一种看起来更短、更简单的方法更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54327918/