Получить дату-время в секундах от текущей даты - PullRequest
0 голосов
/ 13 июня 2018

Необходимо получить дату-время в секундах от текущей даты.Хотите добавить 2 дня от текущей даты и времени и получить значение 7 вечера для результата.

IE Текущая дата-время: 1 января, 19:05 ИЛИ 18:55, я должен получить значение3 января, 7:00 вечера в секундах.

PS - Не могу использовать JODA Time & Java 8.

Ответы [ 4 ]

0 голосов
/ 13 июня 2018

Вы пробовали ThreeTenABP от Джейка Уортона?https://github.com/JakeWharton/ThreeTenABP. Вы можете использовать его также для версий Android до API 26 (требуется для нового java.time.instant), и он обладает всеми функциями API Java 8.

Я бы сделал:

LocalDate myDate;
myDate = LocalDate.now().plus(2, ChronoUnit.DAYS);
LocalDateTime myDateAtTime = myDate.atTime(19,0,0);
long millis = myDateAtTime.toEpochSecond(ZoneOffset.UTC);
0 голосов
/ 13 июня 2018

Если Java 8 не идет, то вы можете использовать календарь:

import java.util.Calendar

Calendar calendar = Calendar.getInstance();

calendar.add(Calendar.DAY_OF_YEAR,  2);
calendar.set(Calendar.HOUR_OF_DAY, 19);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
0 голосов
/ 13 июня 2018

Не уверен, что это правильный подход или есть лучшее решение.

    Date dt = new Date();
    Calendar c = Calendar.getInstance();
    c.setTime(dt);
    c.add(Calendar.DATE, 2);
    c.set(Calendar.HOUR_OF_DAY, 19);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);
    long timeInSeconds = c.getTime().getTime() / 100;
0 голосов
/ 13 июня 2018

Без использования Java 8 вы можете сделать что-то вроде этого:

public static void main(String[] args) throws Throwable {
    Calendar c = Calendar.getInstance();
    c.add(Calendar.DAY_OF_YEAR, 2);
    c.set(Calendar.HOUR_OF_DAY, 19);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);
    System.out.println(c.getTimeInMillis() / 1000L); // Time in seconds in two days at 7:00 pm
}

Вы также можете создать статический метод для этого:

private static long timeInTwoDaysAt7pm() {
    Calendar c = Calendar.getInstance();
    c.add(Calendar.DAY_OF_YEAR, 2);
    c.set(Calendar.HOUR_OF_DAY, 19);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);
    return c.getTimeInMillis() / 1000L;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...