如何在Java中对日期执行算术运算?

如何在Java中对日期执行算术运算?,java,Java,可能重复: 实际上我想用Java减去两个日期。我试了很多,但没有成功。所以任何人都请帮助我 Date dtStartDate=pCycMan.getStartDate(); Date dtEndDate=pCycMan.getEndDate(); 我怎样才能减去这两个日期 如何减去这两个日期? 您可以通过以下方式以毫秒为单位获得差异: dtEndDate.getTime() - dtStartDate.getTime() (返回自1970年1月1日00:00:00 GMT以来的毫秒数。)

可能重复:

实际上我想用Java减去两个日期。我试了很多,但没有成功。所以任何人都请帮助我

Date dtStartDate=pCycMan.getStartDate();

Date dtEndDate=pCycMan.getEndDate();
我怎样才能减去这两个日期

如何减去这两个日期?

您可以通过以下方式以毫秒为单位获得差异:

dtEndDate.getTime() - dtStartDate.getTime()
(返回自1970年1月1日00:00:00 GMT以来的毫秒数。)

但是,对于这种类型的日期算术,具有适当的持续时间类(
Duration
)可能是更好的选择。

使用该类

用法:

Calendar c = Calendar.getInstance();
c.setTime(dtStartDate);
int date = c.get(Calendar.YEAR); //int represents the year of the date
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); // int represents dayOfWeek as defined in link.

从这些日期创建两个对象,然后使用add()方法(该方法也可用于对日期进行子交易)。

java中有一个处理日期的框架。。。 看一看,我相信它能帮你

long msDiff = dtEndDate.getTime() - dtStartDate.getTime()

msDiff
现在保存两个日期之间的毫秒差。可以随意使用除法运算符和mod运算符转换为其他单位。

要将日期减为long
getTime()
并减去返回的值。

这取决于您想要什么。要以毫秒为单位获取差异,请说
dtStartDate.getTime()-dtEndDate.getTime()

long diffInMillis = dtEndDate.getTimeInMillis() -  dtStartDate.getTimeInMillis();

要获得日数、小时数等方面的差异,请使用Calendar类(after、before、compareTo、roll等方法可能会有所帮助)。

您希望输出是什么?我说使用。getTime但+1对于Jodasems,对于简单的数学来说,您需要这样的东西吗?正如其他人所指出的,对于任何比这更复杂的东西,乔达时间绝对是最好的选择。但我想要的结果是2011年6月20日-2011年6月1日=28@Anshuman,我不知道6月20日减去6月1日怎么等于28日。你在找什么单位?在我看来,这相当于19天。要获得天数,只需在我的答案中使用代码,然后执行msDiff/(1000*60*60*24)。嗨,迈克,我已经这样做了,但它会给我一个负长lDiffFromToday=currentDate.getTime()-dtSelDate.getTime()的结果;lDiffFromToday=lDiffFromToday/(1000*60*60*24);事实上,我希望结果以天为单位,那么如何在不同的日期内完成呢?还是以时间为单位?如果是后者,你只需除以
24*60*60*1000.0
。你能帮我举个例子吗?请给我举个例子