2015-09-15 6 views
10

Desidero impostare il primo giorno della settimana a giovedì (non domenica o lunedì), perché è la data limite dell'azienda.Come impostare il "primo giorno della settimana" a giovedì in PHP

Ho già un codice per determinare il numero della settimana corrente di una data ma inizia domenica o lunedì.

Come modificare questi a mia preferenza?

function findweek($date) { 
    $monthstart=date("N",strtotime(date("n/l/Y",strtotime($date)))); 
    $newdate=(date("j",strtotime($date))+$monthstart)/7; 
    $ddate=floor($newdate); 
    if($ddate != $date) { 
     $ddate++; 
    } 
    return $ddate; 
} 
+0

Sto ottenendo il tuo punto .......... wat esattamente che vuoi fare –

+0

nella nostra azienda l'inizio del conteggio settimana per il libro paga è giovedì non domenica o lunedì quindi voglio iniziare il conteggio di ogni settimana di ogni mese è giovedì. –

+0

@RaydenBlack vedi se questo può aiutarti http://codepad.org/tI0nMQPo potrebbe essere necessario regolare il formato datetime – Shehary

risposta

1

Questo dovrebbe funzionare.

function findweek($date, $type = "l") { 
    $time = strtotime($date); 
    return date($type, mktime(0, 0, 0, date("m", $time) , date("d", $time)-date("d", $time)+1, date("Y", $time))); 
} 

echo findweek('2015-09-16'); 
+0

Il risultato che voglio è impostare il primo giorno della settimana di un mese a giovedì per non trovare la settimana. –

1

http://php.net/manual/en/datetime.formats.relative.php dice che a partire dal PHP versione 5.6.23, 7.0.8 "settimane iniziano sempre il lunedi. In precedenza, domenica sarebbe anche essere considerato per iniziare una settimana." Detto questo, è il vostro problema che il numero di settimane restituite potrebbe essere errato a seconda che cada oggi o prima del giovedì della settimana corrente? Forse provare qualcosa di simile:

$date = new DateTime(); 
$week = intval($date->format('W')); 
$day = intval($date->format('N')); 
echo $day < 4 ? $week-1 : $week; 

Se sottraendo 1 non è la risposta si potrebbe giocare con addizione/sottrazione, confrontando il risultato con la risposta reale che sapete essere vero fino ad ottenere la formula giusta. Spero che questo ti aiuti!