3 回答
TA贡献1911条经验 获得超7个赞
如果您不必使用日历,那么只需使用自Java8以来可用的新Java DateTime API https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
在那里,你有非常好的便利方法,比如加/减等。
例如,您可以简单地编写
LocalTime now = LocalTime.now(); now.minusHours(2);
TA贡献1802条经验 获得超4个赞
NIO 和 java.time
Path filePath = Paths.get("myFile.txt");
Duration timeToSubtract = Duration.ofMinutes(7);
FileTime lastModified = Files.getLastModifiedTime(filePath);
Instant lastModifiedInstant = lastModified.toInstant();
Instant timeBeforeLastModified = lastModifiedInstant.minus(timeToSubtract);
System.out.println("Time after subtraction is " + timeBeforeLastModified);
刚才在我的计算机上运行,我得到了这个输出:
减法后时间是 2017-02-18T03:06:04Z
末尾的 表示 UTC。Instant::toString
(在追加到字符串时隐式调用)始终在 UTC 中生成字符串。Z
Instant
我正在使用现代Java NIO API和java.time,现代Java日期和时间API。在这种情况下,NIO为我们提供了一个FileTime
,表示上次修改文件的时间。为了做我们的时间数学运算,我首先将其转换为Instant
,这是java.time的中心类。的方法减去持续时间
(时间量),并返回一个新对象。minus
Instant
Instant
不要使用 .这个班级设计得很差,早已过时。Calendar
链接:Oracle教程:日期时间解释如何使用java.time。
TA贡献1817条经验 获得超6个赞
时间戳(as)可以在实例中设置。在那之后,你可以计时。longCalendaradd()
public void time() {
long timeStamp = 31415926535L;
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeStamp);
// Substract 1 hour
calendar.add(Calendar.HOUR, -1);
// Add 20 minutes
calendar.add(Calendar.MINUTE, 20);
}
添加回答
举报