2013-02-04 73 views
0

所以問題是我有一個從服務器的日期,我想根據當前日期和我從服務器獲得的日期之間的差異添加特定的日子。有條件地向當前日期添加特定天數?

serverDate - 的currentdate

工作:我這是怎麼計算天之間的差異,

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()); 
      } 

最終:我可能需要修改這個用例,其中的總天數差異很大所以在這種情況下我需要增加比較次數或是否有任何可以使用的技巧達到特定的日期。

+1

如果你添加了(Calendar.DATE。5-totaldays)''這將節省很多if/else。並且不理解你的問題......你的問題是什麼? – Kent

+0

你是否說'totaldays'可以是一個龐大的數字? – ogzd

+0

@Kent基本上我想保持距離服務器5天的差距,如果5天的差距已經存在,即totaldays = 5,那麼我不需要創建新的服務器日期。 – Prateek

回答

1

確定,從問題的意見,我嘗試重組位的要求:

totaldays(gap)是serverDate和之間的差值

  • 如果差距< 5,使間隙成爲5
  • 如果差距= 5,什麼也不做
  • 如果差距> 5,添加差距serverDate

如果寫着什麼以上爲真

  • 第一計算的totaldays

然後一行將解決你的問題:

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

順便說一句,你應該清楚地描述你在你的問題需要什麼。祝你好運!

4

例如,使用名爲MAX的變量。在你的代碼應該像

int max = 5; 

然後,你可以這樣做:

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

c.add(Calendar.DATE, 5 - totaldays); 
+0

我的意思是一個類變量。無論如何,它只會在代碼中聲明它。 – javi

+0

請's/Date/DATE/g' – Kent

+0

@javi你不能那樣做。你也會減去。不是他所需要的。 – Mukus