【问题标题】:calculate date from utc time and percentage根据UTC时间和百分比计算日期
【发布时间】:2013-06-21 11:56:05
【问题描述】:

我正在尝试使用开始日期和今天日期计算给定日期之间的当前完成百分比。两者之间的持续时间是通过结束日期计算的。这些值将在 javascript 中使用。 startdate = 2013-01-08end date = 2013-07-08 以及今天的实时日期。测试我正在尝试转换我的结果并查看它返回正确的日期。代码如下:

$duration = ( ((strtotime($model['ProjectEndDate']) - 1*86400)*1000) - ((strtotime($model['StartDATE']) - 1*86400)*1000) );
            echo $duration;
            echo "<br>";

            $burn = ((time() - 1*86400)*1000) - ((strtotime($model['StartDATE']) - 1*86400)*1000);
            echo $burn;
            echo "<br>";

            $pBurned = $burn/$duration;
            echo $pBurned*100;
            echo "<br>";

            $time = $time = strtotime( ($date_from + $pBurned) );
            echo date("Y-m-d H:i:s", $time);

输出是

1.56348E+10
14212291000
90.901648885819
1970-01-01 01:00:00

更新至:

$today = time();
            $startdate = strtotime($model['StartDATE']); //
            $enddate = strtotime($model['ProjectEndDate']); // 


            $diff_total = $enddate - $startdate;
            echo $diff_total;
            echo "<br>";

            $diff_today = $today - $startdate;
            echo $diff_today;
            echo "<br>";

            $percentage_date=round(($diff_today/$diff_total)*100,2);
            //echo $diff_today/$diff_total;
            echo $percentage_date.'%';
            exit();

给出输出

15634800
14219916
90.95%

我现在要做的是从开始日期和返回日期计算 90.95%。

【问题讨论】:

  • 在 javascript 中的月份从 0 开始,所以我减去 1 个月

标签: php utc date-conversion


【解决方案1】:

搜索计算百分比的数学。我没有开玩笑。

$today = new DateTime();
$startdate = new DateTime("2013-06-16"); //$model['StartDATE']
$enddate = new DateTime("2013-06-26"); // $model['ProjectEndDate']

$diff_total = $enddate->diff($startdate)->format("%a");    
$diff_today = $today->diff($startdate)->format("%a");    
$percentage_date=round(($diff_today/$diff_total)*100,2);

echo $percentage_date.'%'; // from today

获取日期的百分比

$percentage_to_get = 45;
$percentage_of_days =  floor(($diff_total/100*)$percentage_to_get);
echo date('Y-m-d', strtotime( $startdate->format('Y-m-d') ." + $percentage_of_days day") );

【讨论】:

  • 你现在想做的事情没有意义,因为 90% 的日期会在今天打印,对吧?
  • 说百分比是 45,上面给出的日期有问题我如何计算从 startdate 开始的 45%?
  • 日期为 2013-01-082013-07-08 和 70.00% 返回的日期是 2013-05-14,这是正确的吗?
猜你喜欢
  • 1970-01-01
  • 2019-11-30
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
相关资源
最近更新 更多