【问题标题】:How to calculate the difference in minutes between two timeStamp ( with different days)?如何计算两个 timeStamp (不同天数)之间的分钟差?
【发布时间】:2019-09-15 20:47:06
【问题描述】:

我正在尝试计算两个 java TimeStamps 之间的分钟差,当我写时: 时间戳t1,t2;

t2.getTime()-t1.getTime(); 它只返回两次之间的差值,并且 我一直需要差异(包括几天)

【问题讨论】:

  • 这听起来不太可能 - 在这种情况下,t1.getTime()t2.getTime() 的值是多少?
  • 例如:02/24/2019 13:58:00 02/25/2019 12:58:00 相差 :1380 分钟
  • 对,没错——1380 分钟是 23 小时,这就是这两个值之间的差异。你期望它是什么?
  • 我没有得到你想要的东西,抱歉。你想要几分钟,你想要几天,你想要什么?请解释清楚。
  • 考虑将ThreeTenABP 添加到您的Android 项目中,这样您就可以避免使用旧的、设计不良和令人困惑的Timestamp 类,例如使用ChronoUnit.MINUTES.betweenDuration 类。现代 API 更易于使用,我相信它可以更直接地提供您需要的功能。

标签: java android time timestamp


【解决方案1】:

试试这个

long difftime = t1.getTime() - t2.getTime();
long seconds = diff / 1000;
long minutes = seconds / 60;
long hours = minutes / 60;
long days = hours / 24;

【讨论】:

    【解决方案2】:

    2 个时间戳之间的差异以毫秒为单位。之后应用数学:

    // get time difference in seconds
    long milliseconds = timestamp2.getTime() - timestamp1.getTime();
    int seconds = (int) milliseconds / 1000;
    
    // calculate hours minutes and seconds
    int hours = seconds / 3600;
    int minutes = (seconds % 3600) / 60;
    seconds = (seconds % 3600) % 60;
    

    【讨论】:

      【解决方案3】:

      假设您的意思是 java.sql.Timestamp,下面的代码似乎可以正常工作:

      import java.sql.Timestamp;
      
      class Scratch {
      
          public static final long MINUTES_PER_HOUR = 60;
          public static final long SECONDS_PER_MINUTE = 60;
          public static final long HOURS_PER_DAY = 24;
          public static final long MILLIS_PER_SECOND = 1000L;
      
          public static void main(String[] args) {
              long oneDayPlusFiveMinutesInMillis = (MILLIS_PER_SECOND * SECONDS_PER_MINUTE) * ( 5 + MINUTES_PER_HOUR * HOURS_PER_DAY);
              Timestamp t0 = new Timestamp(System.currentTimeMillis());
              Timestamp t1 = new Timestamp(t0.getTime() + oneDayPlusFiveMinutesInMillis);
              long diff = (t1.getTime() - t0.getTime()) / (MILLIS_PER_SECOND * SECONDS_PER_MINUTE);
              System.out.println("t1 - t0 = " + diff + " minutes");
          }
      }
      

      返回:

      t1 - t0 = 1445 minutes
      

      【讨论】:

        【解决方案4】:
            Timestamp t1 = new Timestamp(new Date("04/26/2019 20:32:49").getTime());
            Timestamp t2 = new Timestamp(new Date("04/27/2019 19:32:49").getTime());
        
            long diff = t2.getTime() - t1.getTime();
        
            long diffSeconds = diff / 1000 % 60;
            long diffMinutes = diff / (60 * 1000) % 60;
            long diffHours = diff / (60 * 60 * 1000) % 24;
            long diffDays = diff / (24 * 60 * 60 * 1000);
            long diffTotMinutes = diff / (60 * 1000);
        
            System.out.println("Days: " + diffDays + " \nTime: " + diffHours + ":" + diffMinutes + ":" + diffSeconds);
            System.out.println("Total Minutes: " + diffTotMinutes);
        

        输出:

        Days: 0 
        Time: 23:0:0
        Total Minutes: 1380
        

        【讨论】:

        • 如果 t2 == "04/27/2019 19:32:49"
        • Days: 0 Time: 23:0:0
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-09
        • 1970-01-01
        相关资源
        最近更新 更多