JS 如何遍历 两个时间点 之间的 所有时间点。

2013-09-26 17:55:59 +08:00
 hpze2000
比如 :
date1 = 2013-01-01 09:00
date2 = 2013-01-03 09:00


然后想得到的结果 是这样的

2013-01-01 09:00
2013-01-01 10:00
2013-01-01 11:00
2013-01-01 12:00
2013-01-01 13:00
.
.
.
.
2013-01-03 08:00
2013-01-03 09:00

这样的结果?
9926 次点击
所在节点    程序员
11 条回复
hsinglin
2013-09-26 18:02:57 +08:00
看看moment.js,应该有便捷的方法。
hpze2000
2013-09-26 18:04:27 +08:00
@hsinglin 最好是原生的JS
solupro
2013-09-26 18:15:20 +08:00
格式化成时间戳然后循环对比,每次累加指定step得到结果再格式化回来就可以了
subpo
2013-09-26 18:19:34 +08:00
自己for构建
xiaoxianyu
2013-09-26 19:25:49 +08:00
xiaoxianyu
2013-09-26 19:26:25 +08:00
额...怎么溢出了....
switch
2013-09-26 20:18:47 +08:00
比较简单的:

var date1 = "2013-01-01 09:00";
var date2 = "2013-01-03 12:00";
var d1 = new Date(date1.replace(/[- ]/g, ","));
var d2 = new Date(date2.replace(/[- ]/g, ","));
var d = d1;
while (d <= d2) {
console.log([d.getFullYear(), ("0" + (d.getMonth() + 1)).slice(-2), ("0" + d.getDate()).slice(-2)].join("-") + " " + [("0" + d.getHours()).slice(-2), ("0" + d.getMinutes()).slice(-2)].join(":"));
d.setHours(d.getHours() + 1);
}
mkeith
2013-09-26 20:34:23 +08:00
转换成时间戳格式,然后再for循环加24*60*60
est
2013-09-26 21:35:16 +08:00
for(var i=Date.parse('2013-01-01 09:00');i<Date.parse('2013-01-03 09:00');i+=3600000)console.info(new Date(i))


一句话就搞定咯。
hpze2000
2013-09-27 08:38:32 +08:00
@est
这个 好, 非常感谢。
ideacco
2019-09-03 01:45:25 +08:00
@est 特意上来赞一下,这操作真骚

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/83778

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX