【问题标题】:Getting amount of days in decimal notation以十进制表示法获取天数
【发布时间】:2012-09-17 10:10:50
【问题描述】:

我正在尝试以十进制表示法将两个日期的差异转换为天,例如,在我这样做的那一刻,

Date mostRecentDate = dates[0];
Date previousDate = dates[1];

long mostRecentTime = mostRecentDate.getTime();
long previousTime = previousDate.getTime(); 

long diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);

这总是会导致整个天数,但我希望如果两个日期的差异是两天半,我可以返回 2.5,或者如果差异是 6 小时,我可以返回 0.25 等等。

谢谢!

【问题讨论】:

  • 如果需要小数,请不要使用 long。
  • 您可能想要使用双精度数,然后将您的答案四舍五入到您想要的小数位数。

标签: java date datetime time unix-timestamp


【解决方案1】:

DataType 是问题。您可以使用 Double。

            Date[] dates = new Date[2];
        dates[1] = new Date(System.currentTimeMillis()-12*1000*60*60);
        dates[0] = new Date(System.currentTimeMillis());
        Date mostRecentDate = dates[0];
        Date previousDate = dates[1];

        double mostRecentTime = mostRecentDate.getTime();
        double previousTime = previousDate.getTime(); 

        double diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);

【讨论】:

    【解决方案2】:

    您需要使用 double 来获取实数的差异,而不是 long。

    double diffInDays = (mostRecentTime - previousTime ) / (1000 * 60 * 60 * 24);
    

    long 类型是整数,因为您将值除以任何答案,它将转换为整数并删除小数点

    【讨论】:

      猜你喜欢
      • 2014-12-20
      • 2011-03-31
      • 1970-01-01
      • 2016-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 2013-11-07
      相关资源
      最近更新 更多