如何获得两个日期之间的所有时间

时间:2019-06-19 20:31:44

标签: javascript react-native

我正在尝试获取两个日期之间的小时数列表

我尝试过一段时间没有得到它们,但是我不知道为什么当我调用该函数时我的应用程序冻结了

 getHours(){

    let dataA =new Date();
    let dataF = new  Date();
    dataA.setHours(this.state.lojas.data[0].h_abertura.split(':')[0],this.state.lojas.data[0].h_abertura.split(':')[1]);
    dataF.setHours(this.state.lojas.data[0].h_fecho.split(':')[0],this.state.lojas.data[0].h_fecho.split(':')[1]);

    var listaDatas = [];

    console.log(dataF.toString())




    while(Math.abs((( dataA.getTime() - dataF.getTime()) / 60000)) > parseInt(this.state.lojas.data[0].tempoAtender))
    {

       listaDatas.push(dataA.getHours()+":"+dataA.getMinutes());
        dataA.setMinutes(dataA.getMinutes()+ this.state.lojas.data[0].tempoAtender);





    }



 }

Math.abs(((((dataA.getTime()-dataF.getTime())),结果是540,如果我添加分钟数,则“ dataA.setMinutes(dataA.getMinutes()+ this.state。 lojas.data [0] .tempoAtender);“,然后再次检查,我得到520,但看起来好像它进入了无限循环

决议


    let dataA =new Date();
    let dataF = new  Date();
    dataA.setHours(this.state.lojas.data[0].h_abertura.split(':')[0],this.state.lojas.data[0].h_abertura.split(':')[1]);
    dataF.setHours(this.state.lojas.data[0].h_fecho.split(':')[0],this.state.lojas.data[0].h_fecho.split(':')[1]);

    var a = moment(`2016-06-06T${this.state.lojas.data[0].h_fecho.split(':')[0]}:${this.state.lojas.data[0].h_fecho.split(':')[1]}:55`);//now
    var b = moment(`2016-06-06T${this.state.lojas.data[0].h_abertura.split(':')[0]}:${this.state.lojas.data[0].h_abertura.split(':')[1]}:55`);

    var listaDatas = [];

    console.log(dataF.toString())




    while(a.diff(b,'minutes') >= parseInt(this.state.lojas.data[0].tempoAtender))
    {

       listaDatas.push(b.hour()+":"+b.minutes())
        b.add(this.state.lojas.data[0].tempoAtender,'minutes')





    }

    listaDatas.push((b.hour()+":"+b.minutes()).toString())
    alert(listaDatas.toString())

1 个答案:

答案 0 :(得分:0)

我相信您的问题在于您要增加数据A:

    dataA.setMinutes(dataA.getMinutes()+ this.state.lojas.data[0].tempoAtender);

dataA.getTime第一次通过了while条件。除非this.state.lojas.data[0].tempoAtender为负数,否则您似乎只是将其放大而不是缩小