Example usage for org.joda.time Duration Duration

List of usage examples for org.joda.time Duration Duration

Introduction

In this page you can find the example usage for org.joda.time Duration Duration.

Prototype

public Duration(ReadableInstant start, ReadableInstant end) 

Source Link

Document

Creates a duration from the given interval endpoints.

Usage

From source file:it.tidalwave.actor.impl.DefaultCollaboration.java

License:Apache License

/*******************************************************************************************************************
 *
 * {@inheritDoc}//from  w w w  . j a  v a  2 s.co m
 *
 ******************************************************************************************************************/
@Override
@Nonnull
public Duration getDuration() {
    return new Duration(startTime, System.currentTimeMillis());
}

From source file:it.webappcommon.lib.DateUtils.java

License:Open Source License

/**
 * //from  www.j ava2s .c  o m
 * @param _fromDate
 * @param _fromTime
 * @param _toDate
 * @param _toTime
 * @return
 */
public static Double calculateDuration(Date _fromDate, Date _fromTime, Date _toDate, Date _toTime) {
    Double duration;
    Calendar calFromDate = null;
    Calendar calFromTime = null;
    Calendar calToDate = null;
    Calendar calToTime = null;
    Date fromDateTime = null;
    Date toDateTime = null;

    try {
        if ((_fromDate != null) && (_fromTime != null) && (_toDate != null) && (_toTime != null)) {

            logger.debug(String.format("%s=%s", _fromDate, _fromDate.getTime()));
            logger.debug(String.format("%s=%s", _fromTime, _fromTime.getTime()));
            logger.debug(String.format("%s=%s", _toDate, _toDate.getTime()));
            logger.debug(String.format("%s=%s", _toTime, _toTime.getTime()));

            // calFromDate = new GregorianCalendar();
            // calFromDate.setTime(_fromDate);

            // calFromTime = new GregorianCalendar();
            // calFromTime.setTime(_fromTime);

            // calToDate = new GregorianCalendar();
            // calToDate.setTime(_toDate);

            // calToTime = new GregorianCalendar();
            // calToTime.setTime(_toTime);

            // calFromDate.set(Calendar.HOUR_OF_DAY,
            // calFromTime.get(Calendar.HOUR_OF_DAY));
            // calFromDate.set(Calendar.MINUTE,
            // calFromTime.get(Calendar.MINUTE));
            // calFromDate.set(Calendar.SECOND,
            // calFromTime.get(Calendar.SECOND));
            // calFromDate.set(Calendar.MILLISECOND,
            // calFromTime.get(Calendar.MILLISECOND));
            //
            // calToDate.set(Calendar.HOUR_OF_DAY,
            // calToTime.get(Calendar.HOUR_OF_DAY));
            // calToDate.set(Calendar.MINUTE,
            // calToTime.get(Calendar.MINUTE));
            // calToDate.set(Calendar.SECOND,
            // calToTime.get(Calendar.SECOND));
            // calToDate.set(Calendar.MILLISECOND,
            // calToTime.get(Calendar.MILLISECOND));

            // calFromDate.setTime(mergeDateTime(_fromDate, _fromTime));
            // calToDate.setTime(mergeDateTime(_toDate, _toTime));

            // fromDateTime = calFromDate.getTime();
            // toDateTime = calToDate.getTime();

            // logger.debug(String.format("%s=%s", fromDateTime,
            // fromDateTime.getTime()));
            // logger.debug(String.format("%s=%s", toDateTime,
            // fromDateTime.getTime()));

            // duration = ((toDateTime.getTime() - fromDateTime.getTime()) /
            // 1000d / 60d / 60d);

            // DateTime a = new DateTime(mergeDateTime(_fromDate,
            // _fromTime));
            // DateTime b = new DateTime(mergeDateTime(_toDate, _toTime));

            // LocalDateTime a1 = new LocalDateTime(mergeDateTime(_fromDate,
            // _fromTime).getTime());
            // LocalDateTime b1 = new LocalDateTime(mergeDateTime(_toDate,
            // _toTime).getTime());

            // LocalDateTime a1 = mergeLocalDateTime(_fromDate, _fromTime);
            // LocalDateTime b1 = mergeLocalDateTime(_toDate, _toTime);

            DateTime a1 = mergeDateTime2(_fromDate, _fromTime);
            DateTime b1 = mergeDateTime2(_toDate, _toTime);

            // Duration d = new Duration(a, b);
            Duration d1 = new Duration(a1.toDateTime(DateTimeZone.UTC), b1.toDateTime(DateTimeZone.UTC));

            // logger.debug(String.format("%s", duration));

            // logger.debug(d.getMillis() / 1000d / 60d / 60d);
            logger.debug(d1.getMillis() / 1000d / 60d / 60d);

            duration = d1.getMillis() / 1000d / 60d / 60d;

        } else {

            duration = 0d;

        }
    } catch (Exception e) {
        logger.error("calculateDuration", e);
        duration = 0d;
    } finally {
        calFromDate = null;
        calFromTime = null;
        calToDate = null;
        calToTime = null;
        fromDateTime = null;
        toDateTime = null;
    }

    // setDuration(duration);
    return duration;
}

From source file:job.myprojects.Task.java

License:Open Source License

private BigDecimal calcDuration() {
    if (startTime != null && endTime != null && startTime.before(endTime)) {
        Duration duration = new Duration(startTime.getTime(), endTime.getTime());
        return new BigDecimal(duration.getMillis() / (1.0 * DateTimeConstants.MILLIS_PER_HOUR));
    }//from   w  w  w.  j a va 2s  .  c  o m
    return BigDecimal.ZERO;
}

From source file:jp.co.ntt.atrs.domain.service.b0.TicketSharedServiceImpl.java

License:Apache License

/**
 * ???????//from www .  j ava 2s .  com
 * 
 * @param outwardFlight 
 * @param homewardFlight 
 * @throws BusinessException 
 */
private void validateFlightDepartureDateForRoundTripFlight(Flight outwardFlight, Flight homewardFlight)
        throws BusinessException {

    // ???
    DateTime outwardArriveDateTime = DateTimeUtil.toDateTime(outwardFlight.getDepartureDate(),
            outwardFlight.getFlightMaster().getArrivalTime());

    // ?
    DateTime homewardDepartureDateTime = DateTimeUtil.toDateTime(homewardFlight.getDepartureDate(),
            homewardFlight.getFlightMaster().getDepartureTime());

    // ?????????
    // (????????
    // ?????)
    Duration flightDuration = new Duration(outwardArriveDateTime, homewardDepartureDateTime);
    if (flightDuration.getStandardMinutes() < reserveIntervalTime) {
        throw new AtrsBusinessException(TicketReserveErrorCode.E_AR_B2_2001);
    }
}

From source file:kr.debop4j.timeperiod.calendars.DateAdd.java

License:Apache License

/**
 *  ? offset ?  ?? .//from w w w.java  2  s  .c o  m
 *
 * @param start         ?
 * @param offset       
 * @param seekDir      ? 
 * @param seekBoundary   ? 
 * @return ? ?,  
 */
protected Pair<DateTime, Duration> calculateEnd(DateTime start, Duration offset, SeekDirection seekDir,
        SeekBoundaryMode seekBoundary) {
    if (isTraceEnable)
        log.trace(
                "? ?  ?? ... start=[{}], offset=[{}], seekDir=[{}], seekBoundary=[{}]",
                start, offset, seekDir, seekBoundary);
    shouldBe(offset.compareTo(Duration.ZERO) >= 0, "offset? 0 ??? . offset=[%d]",
            offset.getMillis());

    Duration remaining = offset;
    DateTime end;

    // search periods
    ITimePeriodCollection searchPeriods = new TimePeriodCollection(this.includePeriods);
    if (searchPeriods.size() == 0)
        searchPeriods.add(TimeRange.Anytime);

    // available periods
    ITimePeriodCollection availablePeriods = new TimePeriodCollection();
    if (excludePeriods.size() == 0) {
        availablePeriods.addAll(searchPeriods);
    } else {
        if (isTraceEnable)
            log.trace(" ? .");
        TimeGapCalculator<TimeRange> gapCalculator = new TimeGapCalculator<>();
        for (ITimePeriod p : searchPeriods) {
            if (excludePeriods.hasOverlapPeriods(p)) {
                if (isTraceEnable)
                    log.trace(" ? ?  ? ");
                for (ITimePeriod gap : gapCalculator.getGaps(excludePeriods, p))
                    availablePeriods.add(gap);
            } else {
                availablePeriods.add(p);
            }
        }
    }

    if (availablePeriods.size() == 0) {
        if (isTraceEnable)
            log.trace(" period   .");
        return Pair.create(null, remaining);
    }

    if (isTraceEnable)
        log.trace("  ? ?   ? ...");
    TimePeriodCombiner periodCombiner = new TimePeriodCombiner<TimeRange>();
    availablePeriods = periodCombiner.combinePeriods(availablePeriods);

    if (isTraceEnable)
        log.trace(" ? .");

    Pair<ITimePeriod, DateTime> result = (seekDir == SeekDirection.Forward)
            ? findNextPeriod(start, availablePeriods)
            : findPrevPeriod(start, availablePeriods);

    ITimePeriod startPeriod = result.getV1();
    DateTime seekMoment = result.getV2();

    //   ?  .
    if (startPeriod == null) {
        if (isTraceEnable)
            log.trace("  ?  .");
        return Pair.create(null, remaining);
    }

    // offset ? 0 ??,  ? ? seekMoment  .
    if (offset.isEqual(Duration.ZERO)) {
        if (isTraceEnable)
            log.trace("offset ? 0?,  ? ? seekMoment .");
        return Pair.create(seekMoment, remaining);
    }

    if (seekDir == SeekDirection.Forward) {

        for (int i = availablePeriods.indexOf(startPeriod); i < availablePeriods.size(); i++) {
            ITimePeriod gap = availablePeriods.get(i);
            Duration gapRemaining = new Duration(seekMoment, gap.getEnd());

            if (isTraceEnable)
                log.trace("Seek forward. gap=[{}], gapRemaining=[{}], remaining=[{}], seekMoment=[{}]", gap,
                        gapRemaining, remaining, seekMoment);

            boolean isTargetPeriod = (seekBoundary == SeekBoundaryMode.Fill)
                    ? gapRemaining.compareTo(remaining) >= 0
                    : gapRemaining.compareTo(remaining) > 0;

            if (isTargetPeriod) {
                end = seekMoment.plus(remaining);
                remaining = null;
                return Pair.create(end, remaining);
            }

            remaining = remaining.minus(gapRemaining);
            if (i == availablePeriods.size() - 1)
                return Pair.create(null, remaining);

            seekMoment = availablePeriods.get(i + 1).getStart(); // next period
        }
    } else {
        for (int i = availablePeriods.indexOf(startPeriod); i >= 0; i--) {
            ITimePeriod gap = availablePeriods.get(i);
            Duration gapRemaining = new Duration(gap.getStart(), seekMoment);

            if (isTraceEnable)
                log.trace("Seek backward. gap=[{}], gapRemaining=[{}], remaining=[{}], seekMoment=[{}]", gap,
                        gapRemaining, remaining, seekMoment);

            boolean isTargetPeriod = (seekBoundary == SeekBoundaryMode.Fill)
                    ? gapRemaining.compareTo(remaining) >= 0
                    : gapRemaining.compareTo(remaining) > 0;

            if (isTargetPeriod) {
                end = seekMoment.minus(remaining);
                remaining = null;
                return Pair.create(end, remaining);
            }
            remaining = remaining.minus(gapRemaining);
            if (i == 0)
                return Pair.create(null, remaining);

            seekMoment = availablePeriods.get(i - 1).getEnd();
        }
    }

    if (isTraceEnable)
        log.trace(" ??  .");
    return Pair.create(null, remaining);
}

From source file:kr.debop4j.timeperiod.calendars.DateAdd.java

License:Apache License

/**
 * start periods?  ?   ? ?   ? ,  start    period .
 *
 * @param start    ??//  www .  ja v  a 2  s  .c o  m
 * @param periods ? 
 * @return period  ?  ??
 */
private static Pair<ITimePeriod, DateTime> findNextPeriod(DateTime start,
        Iterable<? extends ITimePeriod> periods) {
    if (isTraceEnable)
        log.trace("?? ? ? ... start=[{}], periods=[{}]", start,
                StringTool.listToString(periods));

    ITimePeriod nearest = null;
    DateTime moment = start;
    Duration difference = TimeSpec.MaxDuration;

    for (ITimePeriod period : periods) {

        // ? start ??? (before)
        if (period.getEnd().compareTo(start) < 0)
            continue;

        // start ? ?...
        if (period.hasInside(start)) {
            nearest = period;
            moment = start;
            break;
        }
        //  ? ? ?
        Duration periodToMoment = new Duration(start, period.getStart());
        if (periodToMoment.compareTo(difference) >= 0)
            continue;

        difference = periodToMoment;
        nearest = period;
        moment = period.getStart();
    }

    if (isTraceEnable)
        log.trace("?? ? ? . start=[{}], moment=[{}], neearest=[{}]",
                start, moment, nearest);

    return Pair.create(nearest, moment);
}

From source file:kr.debop4j.timeperiod.calendars.DateAdd.java

License:Apache License

/**
 * start periods  ?   ? ?   ? ,  start    period .
 *
 * @param start    ??/*from  www.  j a va  2 s  .  c o  m*/
 * @param periods ? 
 * @return period  ?  ??
 */
private static Pair<ITimePeriod, DateTime> findPrevPeriod(DateTime start,
        Iterable<? extends ITimePeriod> periods) {
    if (isTraceEnable)
        log.trace("?? ? ? ... start=[{}], periods=[{}]", start,
                StringTool.listToString(periods));

    ITimePeriod nearest = null;
    DateTime moment = start;
    Duration difference = TimeSpec.MaxDuration;

    for (ITimePeriod period : periods) {

        // ? start ??? (after)
        if (period.getStart().compareTo(start) > 0)
            continue;

        // start ? ?...
        if (period.hasInside(start)) {
            nearest = period;
            moment = start;
            break;
        }
        //  ? ? ?
        Duration periodToMoment = new Duration(start, period.getEnd());
        if (periodToMoment.compareTo(difference) >= 0)
            continue;

        difference = periodToMoment;
        nearest = period;
        moment = period.getEnd();
    }

    if (isTraceEnable)
        log.trace("?? ? ? . start=[{}], moment=[{}], neearest=[{}]",
                start, moment, nearest);

    return Pair.create(nearest, moment);
}

From source file:kr.debop4j.timeperiod.calendars.DateDiff.java

License:Apache License

public DateDiff(DateTime start, DateTime end, ITimeCalendar timeCalendar) {

    this.start = start;
    this.end = end;
    this.difference = new Duration(start, end);
    this.timeCalendar = (timeCalendar != null) ? timeCalendar : TimeCalendar.getDefault();
}

From source file:kr.debop4j.timeperiod.calendars.DateDiff.java

License:Apache License

private int calcWeeks() {
    if (Objects.equal(start, end))
        return 0;

    DateTime week1 = Times.getStartOfWeek(start, timeCalendar.getFirstDayOfWeek());
    DateTime week2 = Times.getStartOfWeek(end, timeCalendar.getFirstDayOfWeek());

    DateDiff.log.trace("week1=[{}], week2=[{}]", week1, week2);

    if (Objects.equal(week1, week2))
        return 0;

    return (int) (new Duration(week1, week2).getStandardDays() / TimeSpec.DaysPerWeek);
}

From source file:kr.debop4j.timeperiod.DateTimeSet.java

License:Apache License

@Override
public Duration getDuration() {
    if (isEmpty())
        return null;

    DateTime min = getMin();//from   w ww. j  a v a  2s.  c  o  m
    DateTime max = getMax();
    return (min != null && max != null) ? new Duration(min, max) : null;
}