var dates = [
"2020-03-07T17:22:00.000Z",
"2020-03-13T04:56:00.000Z"
];
var convertedDates = dates.map(date => new Date(date).getTime());
console.log(convertedDates);
var i;
var fib = convertedDates;
var limit = 5;
for (i = 2; i < limit; i++) {
fib[i] = fib[i - 2] + fib[i - 1];
}
fib.forEach(item => console.log(new Date(item).toISOString()));
控制台输出:
[ 1583601720000, 1584075360000 ]
2020-03-07T17:22:00.000Z
2020-03-13T04:56:00.000Z
2070-05-18T22:18:00.000Z
2120-07-30T03:14:00.000Z
2220-12-16T01:32:00.000Z
想法是基于2个时间戳生成斐波那契数列。显然,输出不会给我预期的结果。我想念什么?
getTime返回的值是一个时间值,它是从1970-01-01T00:00:00Z开始的偏移量。因此,当您执行以下操作时,请从2020-03-07和2020-03-13的日期开始(大约):
fib[i] = fib[i - 2] + fib[i - 1]
对于您正在执行的第一次迭代(大约):
fib[i] = (50 years, 2 months, 7 days) + (50 years, 2 months, 13 days);
// Which is equivalent to
fib[i] = (100 years, 4 months, 20 days);
然后,当您这样做:
new Date(item).toISOString()
您正在做:
1970-01-01 + (100 years, 4 months, 20 days);
哪个是2070-05-20。依此类推,直到达到极限为止。
[不知道您期望的结果,今天无法解释为什么您没有看到想要的东西。