【问题标题】:How to make a time check如何进行时间检查
【发布时间】:2020-03-26 11:11:39
【问题描述】:

我想以这样的方式进行检查:

当前时间:1220

如果用户以1215 的取货时间下订单,它应该给出错误。

如果他把它放在1250 它应该继续。

我尝试过为hours_entered>Current_hour 做了一个if 语句,但有几分钟我对如何实现这一点感到有些困惑。我在 Laravel 上做这个,这就是我到目前为止所做的:

$currentTime=Carbon::now()->toTimeString();
$currentHour=date('H');
$currentMinutes=date('i');
if($request->hours>=$currentHour && $request->minutes>currentMinutes){
     Alert::error('You have entered an invalid time','Invalid Time');
     return redirect()->back();
}

【问题讨论】:

  • 您能给我们提供更多信息吗?假设当前时间是下午 1 点,用户在 1.15 下单取货,这是一个错误,如果他在 1.50 下单,可以吗?那么,在用户通过取货下订单之前,是否应该经过固定的分钟数?
  • 是的,当前分钟数必须至少增加 40 分钟

标签: php laravel time


【解决方案1】:

您会注意到时间有效有两种可能性:

如果请求的小时数低于当前小时数,则始终有效。如果请求的小时与当前小时相同,则请求的分钟必须小于当前分钟。

if( $reqHour < $currentHour || 
    ($reqHour === $currentHour && $reqMinute <= $currentMinute)
) {
  // passes
}

现在必须将其反转为“失败”的情况:

如果请求的时间高于当前时间,则始终无效。如果请求的小时数与当前的小时数相同,如果请求的分钟数大于当前分钟数则无效:

if( $reqHour > $currentHour ||
   ($reqHour === $currentHour && $reqMinute > $currentMinute)
) {
  // Invalid case
}

如果还要检查日期,请考虑使用DateTime-objects 或类似的比较。

【讨论】:

  • 问题是我想检查用户必须在未来下订单,取货时间不能在过去
【解决方案2】:

in $request->time 以 DateTime 格式从用户那里获取请求的时间,然后进行如下比较。我希望它对你有用。

$valid_time_till=now()->addMinutes(50);

if($request->time

 .........

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多