如何使用另一个以前的日期作为参考来获取以前的日期

how to get a previous date using another previous date as referene

我正在尝试从 Gmail 收件箱中获取 10 天范围内的邮件。

我需要一种计算日期的方法,如下所示:

Date toDate = new Date();//for the first time it will be a present date
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -10);           
Date fromDate = calendar.getTime();//This date will be 10 days before today.

在下一次迭代中,我想要 "fromDate" 到 "fromDate" 前 10 天的消息。 现在,

toDate = fromDate ; //and 
fromDate = fromDate-10;

请告诉我如何实现。 我能够为第一个 iteration.I 编写内容,但在其余迭代中遇到困难。

那么from the "fromDate" to 10 days before "fromDate"表示今天前20天。

    Calendar calendar = Calendar.getInstance();
    System.out.println(calendar.getTime());
    calendar.add(Calendar.DATE, -10); // 10 days before today
    Date toDate = calendar.getTime();
      // remember now your calendar instance 10 days older than today
      // so reduce 10 more days equals to 20 days before today
    calendar.add(Calendar.DATE,-10); // another 10 days before today
    Date fromDate=calendar.getTime();
    System.out.println("from date: "+fromDate);
    System.out.println("to date: "+toDate);

您可以使用 Calendar class 中的 setTime(Date d) 来将其初始化为您想要的任何日期。然后,如果您之前设置了过去的日期,则可以应用另一个偏移量

   Date toDate = new Date();
   Calendar cal = Calendar.getInstance();
   cal.add(Calendar.DATE, -10);
   Date fromDate = cal.getTime(): // 10 days back from now

稍后,要么重新使用 Calendar 实例(如果可用),要么创建一个用 fromDate 初始化的新实例。以下示例假设您只有 fromDate :

   Calendar cal = Calendar.getInstance();
   cal.setTime(from); // which is 10 days back
   cal.add(Calendar.DATE, -10);
   Date fromFromDate = cal.getTime(): // now 20 days back

这是return过去日期的实用方法。

例如,如果您想获取 20 天之前的日期,则在此方法中将 20 作为输入传递。它会return你20天前的日期

public static Date getPastDate(int dayCount) 
{
    try 
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        int daysToSubstract = dayCount * (-1);
        cal.add(Calendar.DATE, daysToSubstract);
        Date dateBefore30Days = cal.getTime();
        return dateBefore30Days;

    } 
    catch (Exception e) 
    {
            e.printStackTrace();
            return null;
    }
}

输入:20

输出: 2 月 10 日星期二 17:58:30 IST 2015

希望对您有所帮助

这就是您的代码在循环中的样子。

    int numberOfIterations = 3;

    Date toDate = new Date();
    Date fromDate = null;
    Calendar calendar = Calendar.getInstance();

    for (int i = 0; i < numberOfIterations; i++) {
        calendar.add(Calendar.DATE, -10);
        fromDate = calendar.getTime();
        System.out.println(fromDate + " - " + toDate);
        toDate = fromDate;
    }