用java将非整数天转换为实际日期



在Java中,如何根据浮点值(例如3.47天前(计算准确的日期?

在内部,Java日期存储为long,正如文档所说,它表示";自被称为"0"的标准基准时间以来的毫秒数;"纪元";,即1970年1月1日00:00:00 GMT";。

您可以通过调用Date的getTime()方法来从Date中获取该长值。

您可以通过使用long的构造函数(例如new Date(myLongValue)(从long创建Date。

因此,您可以计算一天中的毫秒数,将当前时间作为一个长时间,从中减去(3.47*millisecondsInADay(,然后使用所得值来构造一个新的Date。

注意,";一天中的毫秒数";这可能是一个问题,这取决于你需要的准确性,以及你想要应用它的情况。

假设可以将提供的天数转换为秒(为了方便起见,省略了一些小数部分(,下面是将天数转换为秒钟并从基于本地机器的当前时间中减去秒数(如Duration(的代码(根据LocalDateTime.now(((:

public static void main(String[] args) {
double daysAgo = 3.47;
LocalDateTime timeAgo = getTimeAgo(daysAgo);
System.out.println("Time ago: " + timeAgo);
}
public static LocalDateTime getTimeAgo(double daysAgo) {
long secondsAgo = secondsFromDays(daysAgo);
Duration duration = Duration.of(secondsAgo, ChronoUnit.SECONDS);
LocalDateTime now = LocalDateTime.now();
System.out.println("Starting time: " + now);
return now.minus(duration);
}
public static long secondsFromDays(double days) {
return (long) (days * 24 * 60 * 60);
}

结果:

Starting time: 2021-06-28T22:31:16.242040100
Time ago: 2021-06-25T11:14:28.242040100

相关内容

  • 没有找到相关文章

最新更新