【问题标题】:Compare dates and get the number of days [duplicate]比较日期并获取天数[重复]
【发布时间】:2012-03-17 19:49:08
【问题描述】:

可能重复:
How can I find the number of days betwen two Dates?

我遇到了一个问题,即如何通过比较两个日期来获取已过去的天数。目前我尝试使用 compareTo() 但它只返回 1 或-1,我想获取已经过去的天数。谢谢

【问题讨论】:

    标签: java android


    【解决方案1】:

    这应该可以 它的java代码。 只需修改以使用 android

    import java.util.*;
     public class DateDifference {
     public static void main(String args[]){
     DateDifference difference = new DateDifference();
     }
    DateDifference() {
    Calendar cal1 = new GregorianCalendar();
    Calendar cal2 = new GregorianCalendar();
    
    cal1.set(2008, 8, 1); 
    cal2.set(2008, 9, 31);
    System.out.println("Days= "+daysBetween(cal1.getTime(),cal2.getTime()));
    }
    public int daysBetween(Date d1, Date d2){
    return (int)( (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24));
    }
    }
    

    【讨论】:

    • 我认为这段代码在stackoverflow中写了很多次
    • 我刚刚做了一个快速的谷歌搜索
    • 我也做过,但是这段代码已经做过很多次了,而且在stackoverflow中也写过很多次,所以删除它
    【解决方案2】:

    compareTo() 方法(如果您使用 Data/DateTime() 作为示例)只会为您提供:

    返回一个整数,指示此实例是否早于, 与指定的日期/日期时间值相同或晚于指定的日期/日期时间值。 (MSDN)

    这就是为什么你只能得到 -1 和 1 之间的数字而不是天数(你可以在 MSDN 上查看

    为了做你想做的事,请查看这篇文章:Number of days between 2 dates

    【讨论】:

      【解决方案3】:

      希望对你有帮助

       import java.util.*; import java.util.Calendar;
      
       public class DeltaDays { public static void main(String[] args) {
      // Creates two calendars instances 
      
      Calendar calendar1 = Calendar.getInstance(); Calendar calendar2 = Calendar.getInstance();
      
       // Set the date for both of the calendar instance 
      calendar1.set(2007, 12, 30); calendar2.set(2008, 05, 03);
      
       // Get the represented date in milliseconds
       long milis1 = calendar1.getTimeInMillis(); long milis2 = calendar2.getTimeInMillis();
      
      // Calculate difference in milliseconds 
      long day = milis2 - milis1;
      
       // Calculate difference in seconds 
      long diffSeconds = day / 1000;
      
       // Calculate difference in minutes 
      long diffMinutes = day / (60 * 1000);
      
       // Calculate difference in hours 
      long diffHours = day / (60 * 60 * 1000);
      
       // Calculate difference in days 
      long diffDays = day / (24 * 60 * 60 * 1000);
      
       System.out.println("In milliseconds: " + day + " milliseconds.");
       System.out.println("In seconds: " + diffSeconds + " seconds.");
       System.out.println("In minutes: " + diffMinutes + " minutes.");
       System.out.println("In hours: " + diffHours + " hours.");
       System.out.println("In days: " + diffDays + " days."); } }
      

      【讨论】:

        【解决方案4】:

        试试这个,在你的 android 项目上使用 dateDifference() 方法:

        import java.util.Calendar;
        import java.util.Date;
        
        public class Sample {
        
        public static void main(String arg[])
        {
        
        dateDifference();
        
        }
        
        public static void dateDifference()
        { 
        Date currentdate = new Date();
        Calendar calUpdated = Calendar.getInstance();
        calUpdated.set(2012, 01, 01);
        long currentDateMilliSec = currentdate.getTime();
        long updateDateMilliSec = calUpdated.getTimeInMillis();
        long diffDays = (currentDateMilliSec - updateDateMilliSec) / (24 * 60 * 60 * 1000);
        System.out.println("Time in days: " + diffDays + " days.");
        }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多