0

所以问题是我从服务器获得了一个日期,我想根据当前日期和我从服务器获得的日期之间的差异添加特定的日期。

服务器日期 - 当前日期

工作:这就是我计算天数差异的方式,

String s=formater.format(currentDate);
long d1 = formater.parse(s).getTime();
long d2=formater.parse(serverDate).getTime();
int totaldays=(int)Math.abs((d1-d2)/(1000*60*60*24));

工作:要添加一个从当前日期起 5 天的日期,

    if(totaldays==5)
        {
        Calendar c=Calendar.getInstance();
        c.add(Calendar.DATE, 0);
        System.out.println("value of new server date "+c.getTime());
        }

   else if(totaldays==4)
        {
        Calendar c=Calendar.getInstance();
        c.add(Calendar.DATE, 1);
        System.out.println("value of new server date "+c.getTime());
        }

else if(totaldays==3)
        {
        Calendar c=Calendar.getInstance();
        c.add(Calendar.DATE, 2);
        System.out.println("value of date "+c.getTime());
        }

else if(totaldays==2)
        {
        Calendar c=Calendar.getInstance();
        c.add(Calendar.DATE, 3);
        System.out.println("value of new server date "+c.getTime());
        }

else if(totaldays==1)
        {
        Calendar c=Calendar.getInstance();
        c.add(Calendar.DATE, 4);
        System.out.println("value of new server date "+c.getTime());
        }

else if(totaldays==0)
            {
            Calendar c=Calendar.getInstance();
            c.add(Calendar.DATE, 0);
            System.out.println("value of new server date "+c.getTime());
            }

最终:我可能需要修改这个用例,总天数的差异很大,所以在这种情况下,我需要增加比较次数,或者有什么技巧可以用来达到特定日期。

4

2 回答 2

4

例如,使用名为 MAX 的变量。在你的代码中应该像

int max = 5;

然后你可以这样做:

c.add(Calendar.DATE, max - totaldays);

或者

c.add(Calendar.DATE, 5 - totaldays);
于 2013-02-04T12:16:11.797 回答
1

好的,从问题的评论中,我尝试重新表述一下要求:

totaldays(gap) 是和之间的serverDatecurrentDate

  • 如果gap<5,则使gap变为5
  • 如果gap=5,什么都不做
  • 如果 gap>5,则将 gap 添加到 serverDate

如果上面写的是真的

  • 1、计算totaldays

那么一行就可以解决你的问题:

c.add(Calendar.DATE, totaldays>5?totaldays:5-totaldays);

顺便说一句,您应该清楚地描述您在问题中需要什么。祝你好运!

于 2013-02-04T12:32:13.867 回答