php
  • datetime
  • strtotime
  • weekday
  • 2011-11-15 2 views 4 likes 
    4

    32, 48, 72 시간 전에 여러 검사를 수행하는 스크립트가 있습니다. 기본적으로 데이터베이스에 적어도 x 시간 이상 지난 항목이 있는지 확인합니다.32 시간 전 PHP를 사용하여 주말 제외

    지금이 이렇게 잘 작동 :

    $date = date('Y-m-d H:i:s',strtotime('-32 hours')); 
    $q = "SELECT * FROM `table` WHERE `date` <= '".$date."'"; 
    

    지금 나는이 주말을 제외 할. 이 효과를 얻으려면 weekdaysstrtotime 안에 사용할 수 있지만 몇 시간 동안 작동하지 않는다는 것을 알고 있습니다. 단순히 다음과 같은 작업을 수행 할 수 있기 때문에 쉽게

    48 시간 : 그것은 3 일이기 때문에

    echo date('Y-m-d H:i:s', 
          strtotime(date("Y-m-d H:i:s"). 
          " -2 weekdays ". 
          date('H:i:s'))); 
    

    72 시간 동안은 또한 쉽다. 그러나 32 시간은 1.3 일이기 때문에 문제가됩니다.

    결론적으로 주말을 제외하고 32 시간 전에 datetime을 얻는 방법.

    답변

    3

    사용 strtotime 처음 가지고 같이

    $time = strtotime('-32 hours'); 
    

    을 그 다음을 주말/평일 계산을 수동으로 수행합니다.

    +0

    이것은 완벽하게 작동합니다! 여러 주말에 출근 할 수 있기 때문에 7 일 이상 지나면 문제가 생길 수 있지만 나에게는 그렇지 않습니다. – Kokos

    +0

    +1 내 버전보다 훨씬 낫습니다! :) – mobius

    +0

    포함 된'strtotime ('지난 평일'.date ('H : i : s', $ time), $ time)을 수정하면 실제로'while' 루프를'if' 문으로 대체 할 수 있습니다. . 아마도별로 중요하지 않습니다. – nachito

    -2

    2 일을 제거하고 16 시간 반 수동으로 추가하는 것이 어떨까요? 이 올바른지 또는 가장 좋은 방법은 그것을 할 수 있지만 경우

    $DateTMP = date('Y-m-d h:i:s',(strtotime(date(Y-m-d)." -2 weekdays") + (60 * 60 * 16))); 
    
    +2

    화요일 14:00:00에 어떤 일이 발생합니까? 평일에는 금요일을 14:00:00으로 만들고, 토요일에는 평일이 아닌 토요일에 6:00:00에 16 시간을 더합니다. – nachito

    +0

    왜 나는 데이트 ('Y-m-d H : i : s') 대신 데이트 ('Y-m-d')를 사용했다고 생각합니까? 그 문제를 피하기 위해서. 자신의 솔루션을 자유롭게 제안 할 수는 있지만 정당한 이유가없는 사람에게는 부정적 담당자를 제공하지 마십시오. – NekaraNef

    +0

    날짜를 사용하면 ('Y-m-d') 아무런 문제를 피할 수 없으며 새로운 문제가 생깁니다. 이제 시간은 항상 16:00:00으로 고정됩니다. – nachito

    1

    나는 확실하지 않다 뭔가 같은 :

    function getDateBackExcludingWeekend($hours) { 
        $now = time(); 
        $secondsBack = $hours * 3600; 
    
        $actual = $now - $secondsBack; 
        $monday = strtotime("last monday"); 
    
        if($actual < $monday) { 
        $diff = ($secondsBack - ($now - $monday)); 
        $backthen = ($monday - 172800 /* two days */) - $diff; 
    
        return date("Y-m-d H:i:s", $backthen); 
        } 
    
        return date("Y-m-d H:i:s", $actual); 
    } 
    

     관련 문제

    • 관련 문제 없음^_^