为了账号安全,请及时绑定邮箱和手机立即绑定

两个人之间的日历与 java.Calendar

两个人之间的日历与 java.Calendar

慕的地6264312 2021-12-10 16:22:39
我必须制定一个方法来计算两个日期之间有多少访客参加。这是我为访问者设置值的方法:    System.out.println("Ingrese dia de la visita: ");    fechaVisita.set(Calendar.DAY_OF_MONTH, txt.nextInt());    System.out.println("Ingrese mes de la visita: ");    fechaVisita.set(Calendar.MONTH, txt.nextInt());    System.out.println("Ingrese año de la visita: ");    fechaVisita.set(Calendar.YEAR, txt.nextInt());在这里,我如何设置搜索的开始日期和结束日期:    System.out.println("Ingrese dia desde: ");    fechaDesde.set(Calendar.DAY_OF_MONTH, txt.nextInt());    System.out.println("Ingrese mes desde: ");    fechaDesde.set(Calendar.MONTH, txt.nextInt());    System.out.println("Ingrese año desde: ");    fechaDesde.set(Calendar.YEAR, txt.nextInt());    System.out.println("Ingrese dia hasta: ");    fechaHasta.set(Calendar.DAY_OF_MONTH, txt.nextInt());    System.out.println("Ingrese mes hasta: ");    fechaHasta.set(Calendar.MONTH, txt.nextInt());    System.out.println("Ingrese año hasta: ");    fechaHasta.set(Calendar.YEAR, txt.nextInt());然后,我将正确的方法称为“recaudacion”:    public int recaudacion(Calendar p_fechaDesde, Calendar p_fechaHasta)    {         int cont = 0;        for(int i=0; i<this.getVisitantes().size(); i++)        {           if(p_fechaDesde.after(((Visitante)this.getVisitantes().get(i)).getFechaVisita()) && p_fechaHasta.before(((Visitante)this.getVisitantes().get(i)).getFechaVisita()))            {                cont++;            }        }    return cont;    }但这不起作用,条件永远不是真的,我不知道为什么即使我把假值仍然是假的。我也试过这个:    public int recaudacion(Calendar p_fechaDesde, Calendar p_fechaHasta)    {         int cont = 0;        for(int i=0; i<this.getVisitantes().size(); i++)        {           if(p_fechaDesde.compareTo(((Visitante)this.getVisitantes().get(i)).getFechaVisita()) > 0 &&           p_fechaHasta.compareTo(((Visitante)this.getVisitantes().get(i)).getFechaVisita()) < 0)            {                cont++;            }        }    return cont;    }但也不起作用。我不知道我错过了什么,理论上必须有效,但没有......
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

我之前和之后都以相反的方式使用。这是解决方案:


public int recaudacion(Calendar p_fechaDesde, Calendar p_fechaHasta)

    int cont = 0;

    for(int i=0; i<this.getVisitantes().size(); i++)

    {

       if(p_fechaDesde.before(((Visitante)this.getVisitantes().get(i)).getFechaVisita()) && p_fechaHasta.after(((Visitante)this.getVisitantes().get(i)).getFechaVisita()))

        {

            cont++;

        }

    }

return cont;

}


查看完整回答
反对 回复 2021-12-10
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

我想添加方法 getTime():


 if(p_fechaDesde.getTime().after(((Visitante)this.getVisitantes().get(i))

     .getFechaVisita().getTime()) &&   

 p_fechaHasta.getTime().before(((Visitante)this

     .getVisitantes().get(i)).getFechaVisita().getTime))


查看完整回答
反对 回复 2021-12-10
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

在数字中转换日期并比较数字


 Long value1 = fechaVisita.getTimeInMillis();

 Long value2 = fechaDesde.getTimeInMillis();


 Long visitante = Calendar.getTimeInMillis();


 value1 < visitante < value2


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信