Как отобразить значение NO вместо 01 января 1970 года в день подтягивания - PullRequest
2 голосов
/ 22 апреля 2019

Получил код из старой системы, но я не могу изменить его, чтобы он не показывал истечение срока действия, когда дата равна нулю или 0000-00-00 из базы данных. Вот код.

Я пытался использовать функцию IF на $ expiry_date, но получал белый экран

  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), чтобы показать НЕТ срока годности или Нет даты при выборе из базы данных. В настоящее время он отображается как 01 января 1970 года, даже если данные в базе данных равны NULL.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Попробуйте это

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...
  }
}
0 голосов
/ 22 апреля 2019

Пожалуйста, проверьте перед отображением, является ли этот формат даты действительным или нет.

Вот код для проверки:

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

Надеюсь, что это решит вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...