如何显示NO值而不是1970年1月1日在日期上拉

时间:2019-04-22 03:24:27

标签: php codeigniter

从旧系统中获取了代码,但是当日期为Null或数据库中的0000-00-00时,我无法对其进行修改以显示NO Expiry。这是代码。

我在$ expiry_date尝试了IF函数,但出现白屏

  function select_expiry_dates($set_select_name='expiry_date', $set_default_code='', $set_default_expiry_date='')
  {
    $ci =& get_instance();

    $ci->load->model('Expiry_dates_model');

    $expiry_dates = $ci->Expiry_dates_model->get_expiry_dates();

    if($expiry_dates->num_rows() > 0)
    {
      foreach ($expiry_dates->result() as $row)
      {
        $expiry_date        = $row->code .' ('. date('d M Y', strtotime($row->expiry_date)) .')';
        $default_value      = ($row->code == $set_default_code && $row->expiry_date == $set_default_expiry_date) ? TRUE : '';
        $set_select_option  = set_select($set_select_name, $expiry_date, $default_value);

        echo '<option value="'. $expiry_date .'" data-expiry="'. $expiry_date .'" data-expiry-rate="'. $row->rate .'" '. $set_select_option .'>'. $expiry_date .'</option>';
      }
    }

    return TRUE;
  }

从数据库中选择我需要有效日期($ expiry_dates)来显示NO Expiry或No date。当前显示为1970年1月1日,即使数据库中的数据为NULL。

2 个答案:

答案 0 :(得分:0)

请在显示之前检查日期格式是否有效。

这是要检查的代码:

function validateDate($date, $format = 'Y-m-d')
{
    $d = DateTime::createFromFormat($format, $date);
    // The Y ( 4 digits year ) returns TRUE for any integer with any number of digits so changing the comparison from == to === fixes the issue.
    return $d && $d->format($format) === $date;
}

结果:

var_dump(validateDate('2018-15-01'));  // false
var_dump(validateDate('20184-16-01')); // false
var_dump(validateDate('2018-22-04'));  // true

希望这可以解决您的问题

答案 1 :(得分:0)

尝试一下

if($expiry_dates->num_rows() > 0)
{
  foreach ($expiry_dates->result() as $row)
  {
    if(is_null($row->expiry_date)){
        $date = 'No Date';
    }else{
         $date = $row->expiry_date;
    }
    //Use $date in the code...
  }
}