从旧系统中获取了代码,但是当日期为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。
答案 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...
}
}