Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java计算相对时间跨度(代码转换问题)?_Java_Datetime_Relative Time Span - Fatal编程技术网

如何使用Java计算相对时间跨度(代码转换问题)?

如何使用Java计算相对时间跨度(代码转换问题)?,java,datetime,relative-time-span,Java,Datetime,Relative Time Span,我决定在实现成就的Java上给自己一个挑战 我要做的事情是获取LocalDateTime,从链接问题的答案中转换相同的代码,然后从函数中接收字符串 以下是我迄今为止所做的工作: publicstaticstringreltime(LocalDateTime现在) { //已接受的答案转换为Java const int min=60*秒; 常数整小时=60*分钟; 常数整数天=24*小时; const int mon=30*天; //仍然不知道如何转换这个方法 var ts=新的时间跨度(Date

我决定在实现成就的Java上给自己一个挑战

我要做的事情是获取
LocalDateTime
,从链接问题的答案中转换相同的代码,然后从函数中接收字符串

以下是我迄今为止所做的工作:

publicstaticstringreltime(LocalDateTime现在)
{
//已接受的答案转换为Java
const int min=60*秒;
常数整小时=60*分钟;
常数整数天=24*小时;
const int mon=30*天;
//仍然不知道如何转换这个方法
var ts=新的时间跨度(DateTime.UtcNow.Ticks-yourDate.Ticks);
双增量=数学绝对值(ts.TotalSeconds);
如果(增量<1*分钟)
返回ts.Seconds==1?“一秒前”:ts.Seconds+“秒前”;
如果(增量<2*分钟)
返回“一分钟前”;
如果(增量<45*分钟)
返回ts.Minutes+“分钟前”;
如果(增量<90*分钟)
返回“一小时前”;
如果(增量<24*小时)
返回ts.Hours+“Hours ago”;
如果(增量<48*小时)
返回“昨天”;
如果(增量<30*天)
返回ts.天+天之前;
如果(δ<12*个月)
{
整数月份=换算为32(数学下限((双)ts.Days/30));

return months您可以使用SimpleDataFormat创建一个好的显示格式(使用类似于
的“HH小时、mm分钟和ss秒前”
的格式(不确定这个确切的示例是否有效))。您还可以使用Instant来获取当前时间,并且可以使用
Instant.now().Minuss(Instant.now().Minuss)(秒).getEpochSeconds())
获取时差(或者只需使用System.currentTimeMillis()并乘以1000)


或者,您可以使用Duration并使用getSeconds()和getHours()等编写自定义显示格式。

您可以使用SimpleDataFormat创建一个好的显示格式(使用类似于
“HH小时、mm分钟和ss秒前”
的格式(不确定这个确切的示例是否有效))。您也可以使用Instant来获取当前时间,并且可以使用
Instant.now().minusSeconds(Instant.now().minusSeconds(seconds).getepocheseconds())
来获取时差(或者只需使用System.currentTimeMillis()并乘以1000)


或者,您可以使用Duration并使用getSeconds()和getHours()等编写自定义显示格式。

您需要更深入地了解此方法的实际功能。将代码从C#翻译成Java并不能给您提供一个好的解决方案,而且会让您陷入特定于语言的细节

这两行基本上计算
时间戳
到当前时间的(绝对)秒差。这可以用Java编写如下:

Duration duration = Duration.between(LocalDateTime.now(), timestamp);
long delta = duration.abs().getSeconds();

我只是在这里回答您关于如何转换这两行的实际问题。提供的代码片段不是有效的Java代码,并且缺少一些部分。
delta
是秒数差,不一定需要是双精度。传递给方法的参数应该命名为除
now
以外的任何名称,因为这是您要与方法中的当前时间进行比较的时间戳。

您需要更深入地了解此方法的实际功能。将代码从C#翻译成Java不会给您提供一个好的解决方案,并且会让您陷入特定于语言的细节

这两行基本上计算
时间戳
到当前时间的(绝对)秒差。这可以用Java编写如下:

Duration duration = Duration.between(LocalDateTime.now(), timestamp);
long delta = duration.abs().getSeconds();

我只是在这里回答您关于如何转换这两行的实际问题。提供的代码片段不是有效的Java代码,并且缺少一些部分。
delta
是秒数差,不一定需要是双精度。传递给方法的参数应该命名为除
now
以外的任何名称,因为e这是您要与方法中的当前时间进行比较的时间戳。

可能类是合适的?@Abra我读了一个关于这个问题的堆栈溢出问题。参数是我不完全理解的。@Abra终于理解了。可能类是合适的?@Abra我读了一个关于这个问题的堆栈溢出问题。参数是“我不完全了解他们的地方。@Abra终于明白了。请不要教年轻人使用早已过时且臭名昭著的
SimpleDateFormat
类。至少不要作为第一选择。也不是毫无保留的。今天我们的in及其
DateTimeFormatter
更好。请不要这样做。”请年轻人使用早已过时且臭名昭著的
SimpleDateFormat
类。至少不是第一个选项。也不是没有任何保留。今天,我们在及其
DateTimeFormatter
中有了更好的功能。