首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android计算两个日期之间的天数。

Android计算两个日期之间的天数。
EN

Stack Overflow用户
提问于 2017-03-02 10:36:52
回答 16查看 91.5K关注 0票数 34

我编写了以下代码来查找两个日期之间的天数

代码语言:javascript
运行
复制
    startDateValue = new Date(startDate);
    endDateValue = new Date(endDate);
    long diff = endDateValue.getTime() - startDateValue.getTime();
    long seconds = diff / 1000;
    long minutes = seconds / 60;
    long hours = minutes / 60;
    long days = (hours / 24) + 1;
    Log.d("days", "" + days);

当开始日期和结束日期分别为2017年2月3日和2017年3月3日时,显示的天数为29天。而在同一天显示的天数为1天(如果一个人休假一天,他必须选择相同的开始和结束时间(如果他已经休假两天,则必须选择相同的leave.So )。

我做错了什么?谢谢您抽时间见我。

注意:请不要使用日期构造函数。检查下面接受的答案。使用simpledateformat或Joda时间。不建议使用日期构造函数。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2017-03-02 10:39:50

生成日期对象的代码:

代码语言:javascript
运行
复制
Date date = new Date("2/3/2017"); //deprecated

您将得到28天的答复,因为根据Date(String)构造函数,它是考虑日期= 3,月份=2和年份= 2017

您可以按以下方式转换字符串:

代码语言:javascript
运行
复制
String dateStr = "2/3/2017";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = sdf.parse(dateStr);

使用上面的模板使您的日期对象。然后使用下面的代码计算两个日期之间的天数。希望这能把事情弄清楚。

可以这样做:

代码语言:javascript
运行
复制
long diff = endDateValue.getTime() - startDateValue.getTime();
System.out.println ("Days: " + TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));

请检查链接

如果您使用Joda时间,它要简单得多:

代码语言:javascript
运行
复制
int days = Days.daysBetween(date1, date2).getDays();

请检查JodaTime

如何在Java项目中使用JodaTime

票数 59
EN

Stack Overflow用户

发布于 2019-08-28 15:07:07

Kotlin

下面是计算从今天到某个日期的天数的示例:

代码语言:javascript
运行
复制
 val millionSeconds = yourDate.time - Calendar.getInstance().timeInMillis
 leftDays.text = TimeUnit.MILLISECONDS.toDays(millionSeconds).toString() + "days"

如果要计算两天,则更改:

代码语言:javascript
运行
复制
val millionSeconds = yourDate1.time - yourDate2.time

应该行得通。

票数 25
EN

Stack Overflow用户

发布于 2017-03-02 10:45:11

代码语言:javascript
运行
复制
public static int getDaysDifference(Date fromDate,Date toDate)
{
if(fromDate==null||toDate==null)
return 0;

return (int)( (toDate.getTime() - fromDate.getTime()) / (1000 * 60 * 60 * 24));
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42553017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档