시간이 적법한지 여부를 반환하는 판단 기능이 필요합니다. PHP

WBOY
풀어 주다: 2023-03-01 21:46:01
원래의
1268명이 탐색했습니다.

  1. isValidDate($date) 함수를 작성해야 하며 조건은 다음과 같습니다.

<code>function isValidDate($date)
{
    //1. $date 是本周时 +  time()要在$date前一天的18:00之前 = true
    
    //2. $date 为下周时 +  time()要在本周四下午六点后  = true
    
    //3. 其余返回false.    (注:一周从周一开始)
    
    $orderTime = strtotime($date);
    $now = time();
    if(date('W',$orderTime) == date('W',$now) && (strtotime($date,$now) - $now) > 86400/4)   //预订前一天的18:00,截止预订
    {    
        return true;
    }
    if(date('W',$orderTime) == date('W',$now) + 1 && $now > strtotime('saturday 18:05 -2 day',$now)) //预订第二周,周四下午六点及之后
    {
        return true;
    }
        return false;

}</code>
로그인 후 복사
로그인 후 복사

그 중 두 번째 조건을 작성했을 때 조건 적용 시간에 문제가 있는 것 같다는 의견을 듣고 싶습니다.

답글 내용:

  1. isValidDate($date) 함수를 작성해야 하며 조건은 다음과 같습니다.

<code>function isValidDate($date)
{
    //1. $date 是本周时 +  time()要在$date前一天的18:00之前 = true
    
    //2. $date 为下周时 +  time()要在本周四下午六点后  = true
    
    //3. 其余返回false.    (注:一周从周一开始)
    
    $orderTime = strtotime($date);
    $now = time();
    if(date('W',$orderTime) == date('W',$now) && (strtotime($date,$now) - $now) > 86400/4)   //预订前一天的18:00,截止预订
    {    
        return true;
    }
    if(date('W',$orderTime) == date('W',$now) + 1 && $now > strtotime('saturday 18:05 -2 day',$now)) //预订第二周,周四下午六点及之后
    {
        return true;
    }
        return false;

}</code>
로그인 후 복사
로그인 후 복사

그 중 두 번째 조건을 작성했을 때 조건 적용 시간에 문제가 있는 것 같다는 의견을 듣고 싶습니다.

왜 다른 사람에게 면접 질문을 강요한다고 생각하시나요? 우리는 모두 123개를 순서대로 나열할 수 있으므로 구현에는 문제가 없어야 합니다. . .

카본 설치

<code class="php">use Carbon\Carbon;

/**
 * 校验日期
 * @param  string  $date 日期
 * @return boolean       
 */
function isValidDate($date)
{
    // $date 是本周时 +  time()要在$date前一天的18:00之前 = true
    if (Carbon::parse($date)->format('W') == Carbon::now()->format('W') &&
        time() < Carbon::parse($date)->subDay(1)->hour(18)->minute(0)->timestamp
    ) {
        return true;
    }
    // $date 为下周时 +  time()要在本周四下午六点后  = true
    elseif (
        Carbon::parse($date)->format('W') == Carbon::now()->addWeek(1)->format('W') &&
        time() > Carbon::now()->startOfDay()->addDay(3)->hour(18)->minute(0)->timestamp
    ) {
        return true;
    }

    return false;
}</code>
로그인 후 복사

제목만 바꾸면 됩니다if 语句 return

<code>function isValidDate($date)
{
    //1. $date 是本周时 +  time()要在$date前一天的18:00之前 = true
    
    //2. $date 为下周时 +  time()要在本周四下午六点后  = true
    
    //3. 其余返回false.    (注:一周从周一开始)
    
    $orderTime = strtotime($date);
    $now = time();
    if(date('W',$orderTime) === date('W',$now)) // 当前周
    {    
        // time()要在$date前一天的18:00之前 = true
        return $now < strtotime(date('Y-m-d 18:00:00',strtotime("$date -1 day")));
    }
    if(date('W',$orderTime) === (date('W',$now) + 1)) // 下周
    {
        //  time()要在本周四下午六点后  = true
        return $now > strtotime(date('Y-m-d 18:00:00',strtotime( '+'. 4-date('w') .' days' )));
    }
    return false;

}</code>
로그인 후 복사
관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!