【问题标题】:how to convert minutes into hours, hours into days如何将分钟转换为小时,小时转换为天
【发布时间】:2016-01-29 11:02:33
【问题描述】:

在我的模型中

$this->db->select('message,TIMESTAMPDIFF(MINUTE,date_added,CURRENT_TIMESTAMP) AS minutes_passed');
    $this->db->from('activity_logs');
    $this->db->order_by('log_id','desc');
    $this->db->limit(20);
    $q = $this->db->get();
    return $q->result_array();

在控制器中

 $data['logs'] = $this->common_model->get_logs();

    foreach ($data['logs'] as $k) {
      echo 'total minutes'.$k['minutes_passed']."<br>";//output total minutes "21410"
      }

我有总分钟数,我想获得与分钟相关的总小时数,然后将小时数转换为总天数。 我希望任何人都可以指导我完成这个。 谢谢。

【问题讨论】:

标签: php codeigniter


【解决方案1】:

试试这个功能,

并根据您的要求修改它

    function con_min_days($mins)
    {

            $hours = str_pad(floor($mins /60),2,"0",STR_PAD_LEFT);
            $mins  = str_pad($mins %60,2,"0",STR_PAD_LEFT);

            if((int)$hours > 24){
            $days = str_pad(floor($hours /24),2,"0",STR_PAD_LEFT);
            $hours = str_pad($hours %24,2,"0",STR_PAD_LEFT);
            }
            if(isset($days)) { $days = $days." Day[s] ";}

            return $days.$hours." Hour[s] ".$mins." Min[s]";
    }

【讨论】:

    【解决方案2】:

    我认为你应该简单地从数据库中获取日期,然后在 php 中完成整个事情:

    $now = new DateTime;
    $date_added = new DateTime;
    $date_added->setTimestamp(date_added);
    
    $diff = $now->diff($date_added);
    

    然后就可以打印了:

    sprintf("Temps écoulé : %d jours, %d minutes et %d seconds"; $diff->d, $diff->h, $diff->s);
    

    PS : 您不应该在数据库中存储时间戳,而是使用 DATE 或 DATETIME 字段类型存储日期。

    【讨论】:

      【解决方案3】:

      从数据库中选择字段,如UNIX_TIMESTAMP(date_added) as create_date

      添加此功能

      private function time_elapsed_string($ptime)
      {
          $etime = time() - $ptime;
          if ($etime < 1){
              return '0 seconds';
          }
          $a = array( 365 * 24 * 60 * 60  =>  'year',
                       30 * 24 * 60 * 60  =>  'month',
                            24 * 60 * 60  =>  'day',
                                 60 * 60  =>  'hour',
                                      60  =>  'minute',
                                       1  =>  'second'
                      );
          $a_plural = array( 'year'   => 'years',
                             'month'  => 'months',
                             'day'    => 'days',
                             'hour'   => 'hours',
                             'minute' => 'minutes',
                             'second' => 'seconds'
                      );
          foreach ($a as $secs => $str){
              $d = $etime / $secs;
              if ($d >= 1){
                  $r = round($d);
                  return $r . ' ' . ($r > 1 ? $a_plural[$str] : $str) . ' ago';
              }
          }
      }
      

      并像这样使用它:

      echo $this->time_elapsed_string($item->create_date)
      

      O/P:

      2 hour ago
      5 days ago
      

      取决于你传入函数的毫秒数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-14
        • 1970-01-01
        • 1970-01-01
        • 2014-12-01
        • 1970-01-01
        • 2011-01-08
        • 1970-01-01
        • 2019-02-22
        相关资源
        最近更新 更多