2 回答
TA贡献1876条经验 获得超5个赞
为了完成起见,我将考虑<input type="datetime-local" name="dateTimeInput">作为输入。
所以这基本上创建了这种格式:
d/m/Y h:i A
我在我的浏览器 (Chrome) 上尝试过,它确实做到了。更多信息也在这里:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local
因此,考虑到这一点,您可以使用createFromFormat来解析输入并使用DateTime类。
$input = DateTimeImmutable::createFromFormat('d/m/Y h:i A', $dateTimeInput);
$dt = new DateTime; // now
if (
($input >= $input->setTime(8, 0) && $input <= $input->setTime(17, 0)) && // time is between 8 to 5
$input->format('l') !== 'Sunday' && // is not sunday
$dt->diff($input)->d >= 2 // is greater or more than two days
) {
return true;
}
return false;
这是一个示例输出
旁注:我还应该指出type="datetime-local" Firefox 浏览器不支持,应该考虑使用实时日期时间插件代替。如果用户碰巧使用 Firefox,您应该准备回退。
TA贡献1821条经验 获得超6个赞
您可以使用以下函数并从控制器调用它。
function checkDateConditions( $dateTimeInput ) {
//Make DateTime Object using the input
$inputDate = new DateTime( $dateTimeInput );
//Get the Hour from the Date Input
$inputHour = $inputDate->format('G');
//Check Time is between 8AM and 5PM ( 5PM is = 17)
if( $inputHour < 8 || $inputHour > 17) {
return false;
}
//This Returns 7 for Sunday
$dayOfWeek = $inputDate->format('N');
//If its Sunday we return false
if( $dayOfWeek == 7) {
return false;
}
//Calculate Date Difference
$now = new DateTime( Date('Y-m-d') );
$diff = $inputDate->diff($now);
//If date difference is greater than 2 days return false
if( $diff->days > 2 ) {
return false;
}
//If it reaches here it means all conditions are met so retrun true.
return true;
}
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报