【问题标题】:Android: How to calculate a date some days ago?Android:如何计算几天前的日期?
【发布时间】:2011-10-07 13:58:18
【问题描述】:

我得到今天的日期是这样的:

final Calendar cal = Calendar.getInstance();
{
   mYear = cal.get(Calendar.YEAR);
   mMonth = cal.get(Calendar.MONTH);
   mDay = cal.get(Calendar.DAY_OF_MONTH);
}

我想计算 x 天前的日期……有人得到了什么吗?

【问题讨论】:

标签: java android calendar days


【解决方案1】:

更好的方法是使用add 方法而不是set

cal.add(DAY_OF_YEAR, -2);

即以确保它也在每月的第一天等工作。

【讨论】:

    【解决方案2】:

    您可以执行以下操作:

        Calendar cal=Calendar.getInstance();
        int currentDay=cal.get(Calendar.DAY_OF_MONTH);
        //Set the date to 2 days ago
        cal.set(Calendar.DAY_OF_MONTH, currentDay-2);
    

    然后你可以得到日期:

        cal.getTime(); //The date 2 days ago
    

    【讨论】:

      【解决方案3】:

      我使用以下函数:

      public static Date getStartOfDay() {
          Calendar calendar = Calendar.getInstance();
          calendar.setTime(new Date());
          calendar.set(Calendar.HOUR_OF_DAY, 0);
          calendar.set(Calendar.MINUTE, 0);
          calendar.set(Calendar.SECOND, 0);
          calendar.set(Calendar.MILLISECOND, 0);
          return calendar.getTime();
      }
      
      public static long getDaysAgo(Date date){
          final long diff = getStartOfDay().getTime() - date.getTime();
          if(diff < 0){
          // if the input date millisecond > today's 12:00am millisecond it is today
          // (this won't work if you input tomorrow)
              return 0;
          }else{ 
              return TimeUnit.MILLISECONDS.toDays(diff)+1;
          }
      }
      

      【讨论】:

        【解决方案4】:

        相同类型的代码,但使用 Joda-Time 2.3 库和 Java 7。

        DateTime dateTime = new DateTime( 2014, 2, 3, 7, 8, 9 );
        DateTime twoDaysPrior = dateTime.minusDays( 2 );
        
        dateTime: 2014-02-03T07:08:09.000-08:00
        twoDaysPrior: 2014-02-01T07:08:09.000-08:00
        

        【讨论】:

          猜你喜欢
          • 2022-11-03
          • 1970-01-01
          • 2012-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-25
          • 1970-01-01
          • 2014-04-29
          相关资源
          最近更新 更多