获取2个日期之间的天数差异

时间:2012-09-16 10:58:34

标签: android jodatime jexcelapi

我正在使用jxl api来读取android中的excel文件。当我从excel获得类似“30/11/2012”的日期时,LabelCell输出显示日期为“11/30/12”。

1)我需要在读取excel文件时以dd / MM / yyyy格式获取输出,因为它在excel中存在,所以我不希望不必要地将其转换为另一种格式。怎么做?

2)在读取excel列的日期后,我生成2个变量,一个具有excel日期 - 20天(让我们称之为excelMinus20)和另一个excel日期+10天(我们称之为excelPlus10。 现在,我想进一步检查,如果当前系统日期(智能手机的日期)> = excelMinus20和当前系统日期< = excelPlus10。

如何使用java.text.Date完成这一切?我也试过使用joda时间,但是使用起来太复杂了。请至少指导我正确的方向。

提前致谢 Omkar Ghaisas

1 个答案:

答案 0 :(得分:1)

从文本格式解析日期:

DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse("30/11/2012");

更多信息:SimpleDateFormat doc

从您的日期减去天数:

public static Date substractDays(Date date, int days)
{
    long millis = date.getTime();
    long toSubstract = days * 1000 * 60 * 60 * 60 * 24;
    //                       1milli  1s   1m   1h   1d
    return new Date(millis-toSubstract);
}

添加一些天会是相同的,除了替换 - 用+

从Date对象中获取String表示:

DateFormat formatter = new SimpleDateFormat("...pattern...");
String formatedDate = formatter.format(date.getTime());

修改

您还可以使用建议的方法添加/减少日期:

public static Date substractDays(Date date, int days)
{
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.DATE, -20 /*or +10*/); 
    return calendar.getTime();
}

如果要检查日期是否在某个时间间隔内,则:

public static boolean isInInterval(Date date, Date from, Date to)
{
    return date.getTime()<to.getTime() && date.getTime() > from.getTime();
}