需要从当前日期开始以秒为单位获取日期时间。 想要从当前日期时间增加2天,并获得结果日7点的价值。
即。 当前日期时间是1月1日,下午7:05或者下午6:55,我应该得到1月3日,下午7:00的值,以秒为单位。
P.S。 - 不能使用JODA时间& Java 8。
答案 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;