从当前日期获取以秒为单位的日期时间

时间:2018-06-13 06:45:51

标签: java android datetime

需要从当前日期开始以秒为单位获取日期时间。 想要从当前日期时间增加2天,并获得结果日7点的价值。

即。 当前日期时间是1月1日,下午7:05或者下午6:55,我应该得到1月3日,下午7:00的值,以秒为单位。

P.S。 - 不能使用JODA时间& Java 8。

4 个答案:

答案 0 :(得分:3)

您是否尝试过Jake Wharton的ThreeTenABP? https://github.com/JakeWharton/ThreeTenABP。您也可以在api 26(新的java.time.instant所需)之前将其用于Android版本,并且它具有Java 8 api的所有功能。

我愿意:

LocalDate myDate;
myDate = LocalDate.now().plus(2, ChronoUnit.DAYS);
LocalDateTime myDateAtTime = myDate.atTime(19,0,0);
long millis = myDateAtTime.toEpochSecond(ZoneOffset.UTC);

答案 1 :(得分:2)

如果不使用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;
}

答案 2 :(得分:1)

如果java 8不行,那么你可以使用Calendar:

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);

答案 3 :(得分:0)

不确定这是否是正确的方法或是否有更好的解决方案。

    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;