V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hpze2000
V2EX  ›  程序员

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

  •  
  •   hpze2000 · 2013-09-26 17:55:59 +08:00 · 9890 次点击
    这是一个创建于 4070 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 :
    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

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

    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
        8
    mkeith  
       2013-09-26 20:34:23 +08:00
    转换成时间戳格式,然后再for循环加24*60*60
    est
        9
    est  
       2013-09-26 21:35:16 +08:00   ❤️ 4
    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
        10
    hpze2000  
    OP
       2013-09-27 08:38:32 +08:00
    @est
    这个 好, 非常感谢。
    ideacco
        11
    ideacco  
       2019-09-03 01:45:25 +08:00
    @est 特意上来赞一下,这操作真骚
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2882 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:45 · PVG 22:45 · LAX 06:45 · JFK 09:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.