I have used this little code fragment many times and each time I try to remember where -- and in which file -- was the last.
I guess that if I put it here, I will limit my search space significantly :-)
import oracle.jbo.domain.Date;
import oracle.jbo.domain.Number;
import java.sql.Timestamp;
...
static final long MILI_SECONDS_PER_DAY = 86400000;
/**
* @param startDate initial date to start counting from
* @param nDays number of days can be begative
* @return a Date object nDays after startdate
*/
public static Date dateAfterNDays( Date startDate, int nDays)
{
if (startDate == null)
startDate = new Date(Date.getCurrentDate()); // assume today
Timestamp ts = startDate.timestampValue();
long nextDatesSecs = ts.getTime() + (MILI_SECONDS_PER_DAY * nDays);
return new Date( new Timestamp(nextDatesSecs));
}
Here is an other example that calculates the number of days between two dates. The parameter dates are oracle.jbo.domain.Date and the return type is an oracle.jbo.domain.Number.
/**
* return the number of days between two dates
*/
private Number dateDifference(InDays Date startDate, Date endDate)
{
if (startDate == null)
startDate = new Date(Date.getCurrentDate()); // assume today
if (endDate == null)
endDate = new Date(Date.getCurrentDate()); // asume today again
Timestamp tsStart = startDate.timestampValue();
Timestamp tsEnd = endDate.timestampValue();
long ndays = (tsEnd.getTime() - tsStart.getTime()) / MILI_SECONDS_PER_DAY;
return new Number(ndays);
}
No comments :
Post a Comment