Example usage for java.time LocalDateTime until

List of usage examples for java.time LocalDateTime until

Introduction

In this page you can find the example usage for java.time LocalDateTime until.

Prototype

@Override
public long until(Temporal endExclusive, TemporalUnit unit) 

Source Link

Document

Calculates the amount of time until another date-time in terms of the specified unit.

Usage

From source file:Main.java

public static void main(String[] args) {
    LocalDateTime a = LocalDateTime.of(2014, 6, 30, 12, 00);

    long l = a.until(LocalDateTime.now(), ChronoUnit.DAYS);

    System.out.println(l);/*from  w  w  w.  j av  a  2s . co  m*/
}

From source file:net.resheim.eclipse.timekeeper.internal.TaskActivationListener.java

@Override
public void preTaskActivated(ITask task) {
    LocalDateTime now = LocalDateTime.now();
    String startString = Activator.getValue(task, Activator.START);
    String tickString = Activator.getValue(task, Activator.TICK);
    if (startString != null) {
        LocalDateTime ticked = LocalDateTime.parse(tickString);
        LocalDateTime stopped = LocalDateTime.now();
        long seconds = ticked.until(stopped, ChronoUnit.SECONDS);
        String time = DurationFormatUtils.formatDuration(seconds * 1000, "H:mm", true);
        boolean confirm = MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Add elapsed time?",
                "Work was already started and task was last updated on "
                        + ticked.format(DateTimeFormatter.ofPattern("EEE e, HH:mm", Locale.US))
                        + ". Continue and add the elapsed time since (" + time + ") to the task total?");
        if (confirm) {
            Activator.accumulateTime(task, startString, ticked.until(LocalDateTime.now(), ChronoUnit.MILLIS));
        }//from   w w  w  . j  a  v a2 s.c  om
    }
    Activator.setValue(task, Activator.TICK, now.toString());
    Activator.setValue(task, Activator.START, now.toString());
}

From source file:net.resheim.eclipse.timekeeper.ui.Activator.java

/**
 * Returns the number of milliseconds the active task has been active
 *
 * @return the active milliseconds or "0"
 *//*from   ww  w.jav a  2  s.c om*/
public long getActiveTime() {
    LocalDateTime activeSince = getActiveSince();
    if (activeSince != null) {
        LocalDateTime now = LocalDateTime.now();
        return activeSince.until(now, ChronoUnit.MILLIS);
    }
    return 0;
}

From source file:net.resheim.eclipse.timekeeper.ui.Activator.java

private void installTaxameter() {

    switch (Platform.getOS()) {
    case Platform.OS_MACOSX:
        detector = new MacIdleTimeDetector();
        break;//w ww. j  a v  a  2 s  .c o  m
    case Platform.OS_LINUX:
        detector = new X11IdleTimeDetector();
        break;
    case Platform.OS_WIN32:
        detector = new WindowsIdleTimeDetector();
        break;
    default:
        detector = new GenericIdleTimeDetector();
        break;
    }

    Timer timer = new Timer("Timekeeper", true);
    timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            if (!PlatformUI.getWorkbench().isClosing()) {
                long idleTimeMillis = detector.getIdleTimeMillis();
                ITask task = TasksUi.getTaskActivityManager().getActiveTask();
                if (null != task) {
                    if (idleTimeMillis < lastIdleTime && lastIdleTime > IDLE_INTERVAL) {
                        // Was idle on last check, reactivate
                        Display.getDefault().syncExec(() -> handleReactivation(idleTimeMillis));
                    } else if (lastIdleTime < IDLE_INTERVAL) {
                        String tickString = Activator.getValue(task, Activator.TICK);
                        LocalDateTime now = LocalDateTime.now();
                        LocalDateTime ticked = LocalDateTime.parse(tickString);
                        // Currently not idle so accumulate spent time
                        accumulateTime(task, now.toLocalDate().toString(),
                                ticked.until(now, ChronoUnit.MILLIS));
                        Activator.setValue(task, Activator.TICK, now.toString());
                    }
                }
                lastIdleTime = idleTimeMillis;
            }
        }
    }, SHORT_INTERVAL, SHORT_INTERVAL);

    // Immediately run the idle handler if the system has been idle and
    // the user has pressed a key or mouse button _inside_ the running
    // application.
    reactivationListener = new Listener() {
        public void handleEvent(Event event) {
            long idleTimeMillis = detector.getIdleTimeMillis();
            if (idleTimeMillis < lastIdleTime && lastIdleTime > IDLE_INTERVAL) {
                handleReactivation(idleTimeMillis);
            }
            lastIdleTime = idleTimeMillis;
        }
    };
    final Display display = PlatformUI.getWorkbench().getDisplay();
    display.addFilter(SWT.KeyUp, reactivationListener);
    display.addFilter(SWT.MouseUp, reactivationListener);
}

From source file:net.resheim.eclipse.timekeeper.ui.Activator.java

/**
 * Must be called by the UI-thread//from   w w w. j  av a 2s  .  com
 *
 * @param idleTimeMillis
 */
private void handleReactivation(long idleTimeMillis) {
    // We want only one dialog open.
    if (dialogIsOpen) {
        return;
    }
    synchronized (this) {
        if (idleTimeMillis < lastIdleTime && lastIdleTime > IDLE_INTERVAL) {
            // If we have an active task
            ITask task = TasksUi.getTaskActivityManager().getActiveTask();
            if (task != null && Activator.getValue(task, Activator.START) != null) {
                dialogIsOpen = true;
                String tickString = Activator.getValue(task, Activator.TICK);
                LocalDateTime started = getActiveSince();
                LocalDateTime ticked = LocalDateTime.parse(tickString);
                LocalDateTime lastTick = ticked;
                // Subtract the IDLE_INTERVAL time the computer _was_
                // idle while counting up to the threshold. During this
                // period fields were updated. Thus must be adjusted for.
                ticked = ticked.minusNanos(IDLE_INTERVAL);
                String time = DurationFormatUtils.formatDuration(lastIdleTime, "H:mm:ss", true);

                StringBuilder sb = new StringBuilder();
                if (task.getTaskKey() != null) {
                    sb.append(task.getTaskKey());
                    sb.append(": ");
                }
                sb.append(task.getSummary());
                MessageDialog md = new MessageDialog(Display.getCurrent().getActiveShell(),
                        "Disregard idle time?", null,
                        MessageFormat.format(
                                "The computer has been idle since {0}, more than {1}. The active task \"{2}\" was started on {3}. Deactivate the task and disregard the idle time?",
                                ticked.format(DateTimeFormatter.ofPattern("EEE e, HH:mm:ss", Locale.US)), time,
                                sb.toString(),
                                started.format(DateTimeFormatter.ofPattern("EEE e, HH:mm:ss", Locale.US))),
                        MessageDialog.QUESTION, new String[] { "No", "Yes" }, 1);
                int open = md.open();
                dialogIsOpen = false;
                if (open == 1) {
                    // Stop task, subtract initial idle time
                    TasksUi.getTaskActivityManager().deactivateTask(task);
                    reduceTime(task, ticked.toLocalDate().toString(), IDLE_INTERVAL / 1000);
                } else {
                    // Continue task, add idle time
                    LocalDateTime now = LocalDateTime.now();
                    long seconds = lastTick.until(now, ChronoUnit.MILLIS);
                    accumulateTime(task, ticked.toLocalDate().toString(), seconds);
                    Activator.setValue(task, Activator.TICK, now.toString());
                }
            }
        }
    }
}