检查日期格式是否正确



我想检查数据库值的日期格式。我想把检查在我的代码如果日期字符串的格式是正确的。如果不正确,则存储空值。

$getTmpAfSite =   DB::table('tmp_af_site')->orderBy('id','DESC')->get(['id','name','email','number','origin','destination','estimated_rate','make','model','year','running_condition','carrier_type','avail_date','lead_source','request_params','bats_id','submitted_on']);

foreach ($getTmpAfSite as $key => $value) {

$avail_date = ($value->avail_date != '' && $value->avail_date == Carbon::parse($value->submitted_on)->format('m/d/Y')) ? Carbon::createFromFormat('m/d/Y', $value->avail_date)->format('Y-m-d') : '0000-00-00';
$submitted_on = ($value->submitted_on != '' && $value->submitted_on == Carbon::parse($value->submitted_on)->format('m/d/Y H:i')) ? Carbon::createFromFormat('m/d/Y H:i', $value->submitted_on)->format('Y-m-d H:i') : '0000-00-00 00:00:00';
DB::table('tmp_af_site')->where('id', $value->id)->update([
'avail_date'=>$avail_date,
'submitted_on'=>$submitted_on
]);
}

我正在尝试这个代码来检查值,但它不适合我。如果我没有对它进行检查,然后出现错误的格式,那么错误就会发生。这里是错误发现意外数据。数据缺失的

尝试使用这个函数,这个函数检查有效或不有效的字符串日期与返回真假

function validateDate($date, $format = 'd-M-Y')
{
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) === $date;
}

如果你想要更多的格式日期,你可以添加检查日期,像这样

function validateDate($date)
{
$valid = 0;
$format1 = 'Y-m-d';
$d = DateTime::createFromFormat($format1, $date);
if($d && $d->format($format) === $date){
$valid = 1;
}
$format2 = 'd-m-Y';
$d = DateTime::createFromFormat($format2, $date);
if($d && $d->format($format2) === $date){
$valid = 1;
}
return $valid;
}

您可以使用:

checkdate(int $month, int $day, int $year): bool

的例子:

<?php
var_dump(checkdate(12, 31, 2000));
var_dump(checkdate(2, 29, 2001));
#bool(true)
#bool(false)
$valid = checkdate(12,31,2000);
if ($valid)
echo "Date is valid.";
else
echo "Date is not valid.";
?>

问候,

最新更新