-2
Date oDate= Entitlement_End_Date__c; //Date class from java.util

Double factor=0;

if(oDate.daysBetween(date.today())>0){
  //i.e if days between oDate and today is positive, means that oDate happened before //today's day thus meaning product is expried. 

  factor=((oDate.daysBetween(date.today())/365.00));
  if(factor>1) //greater than one year
    factor=1; // set the factor as one
  factor+=(date.today().daysBetween(TheEndDate)/365.00); //if factor is greater than //one, we want to find the exact amount of time it has expired for. 
}
else{
  factor=oDate.daysBetween(TheEndDate)/365.00;

必要なコード行が少なくて済む、これを書くためのより簡単で簡単な方法があると確信していますか? 私はそれを見ることができません。これをよりクリーンなコードに圧縮する方法を知っている人はいますか?

4

1 に答える 1

3

カレンダーの使用:

final Date endDate;
final Date startDate;


Long diff = endDate.getTime() - startDate.getTime(); // calculate the difference
Date dateDiff = new Date(diff);                      // convert it to a date
Calendar c = Calendar.getInstance();                 // get a calendar instance
c.setTime(dateDiff);                                 // set it to the calendar
int yearDiff = c.get(Calendar.YEAR)-1970;            // read the year and substract the "0-year" value which is 1970

日付のみのソリューション

final long YEAR_IN_MILLIS = 1000L*60L*60L*24L*365L;
int yearDiff = (endDate.getTime()-startDate.getTime())/YEAR_IN_MILLIS;

Java の日付/カレンダー システムについて: Java の日付 API (java.util.Date、.Calendar) はなぜこんなに混乱しているのでしょうか。

于 2013-07-03T14:13:58.813 に答える