gpt4 book ai didi

java - 如何从一组日期中减去一个日期?

转载 作者:行者123 更新时间:2023-12-01 23:18:01 26 4
gpt4 key购买 nike

所以,我有一个向用户请求的日期数组。我想做一个经过天数的函数,通过检查经过的天数来删除某些条目。如果只有一个日期,这还不错,但不幸的是,我不知道如何使用一系列日期来做到这一点。由于我是初学者,我可能忽略了一些基本的东西。

int[] dates;
int time;
int long;
Date now = new Date();

time = (int) (new Date().getTime() / 1000L);
diff = dates - time;

最后一行代码显然不正确,给了我一个错误。我该怎么做才能纠正这个问题?

感谢您忍受菜鸟。

最佳答案

其他答案都是正确的。

  • 您没有正确处理数组,因为您必须循环遍历数组。
  • 您没有正确处理 Date 对象,因为无法使用连字符“-”来减去它们。

研究

我建议多做一些研究。免费Java Tutorials Oracle 在线提供的 Head First Java 是一个很好的起点。书。

<小时/>

集合

如果您愿意,您可以在 Java 中使用基本数组,但是 Collections对象更有用。

乔达时间

您可以使用java.util.Date & Calendar与 Java 捆绑在一起的类,但由于设计和实现不佳,不推荐使用它们。 Joda-Time是一个常用的开源第三方库。

在 Java 8 的 future ,日期/日历类将被新的 java.time.* classes 取代。 。这些类受到 Joda-Time 的启发,但经过了重新架构。

不需要过去

如果您只是想查找太旧(或足够旧,您没有说是哪个)的输入日期,那么您不需要计算耗时。相反,计算输入变得太旧的那一刻的日期时间。然后比较每个输入,看看它是在该时刻之前还是之后。

添加到新集合

另一个提示:不要删除您不需要的内容,只需将您想要的内容添加到集合中即可。使您的代码更易于理解和调试。

标准格式

Joda-Time 默认情况下使用标准 ISO 8601 将日期时间呈现为字符串格式。您可以在下面的控制台输出中看到这一点。 Joda-Time 内置了许多其他格式,您也可以定义自己的格式。

示例代码

这里有一些示例代码可以帮助您继续。使用 Joda-Time 2.3,在 Java 7 中运行。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );

java.util.List<DateTime> dateTimesInput = new ArrayList<DateTime>();
dateTimesInput.add( new DateTime( 2001, 2, 3, 4, 5, 6, timeZone ) );
dateTimesInput.add( new DateTime( 2014, 1, 5, 7, 8, 9, timeZone ) );
dateTimesInput.add( new DateTime( timeZone ).minusDays( 2 ) );

// Calculate the moment of a month ago, in desired time zone. Include all of that moment’s day, so go back to first moment of the day.
DateTime monthAgo = new DateTime( timeZone ).minusMonths( 1 ).withTimeAtStartOfDay();

// Loop the dates input. If any are less than a month old, keep them.
java.util.List<DateTime> keepers = new ArrayList<DateTime>();
for(DateTime dateTime: dateTimesInput){
if( dateTime.isBefore( monthAgo ) ){
// Ignore this date-time.
} else {
keepers.add( dateTime );
}
}

// Dump to console.
System.out.println( "Month ago: " + monthAgo );
for(DateTime dateTime: keepers){
System.out.println( dateTime );
}

运行时...

Month ago:2013-12-06T00:00:00.000+01:00
2014-01-05T07:08:09.000+01:00
2014-01-04T04:25:31.272+01:00

关于java - 如何从一组日期中减去一个日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20940488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com