2010-02-21 13 views
10

Voglio ottenere la data per la data corrente in PHP. ciò che ho provato è qui ...Ottenere il giorno per il giorno corrente in PHP

echo $x."<br>"; 
echo date("D",$x)."<br>"; 

Ma la produzione è stata

21-02-10 
Thu 

sta dando data corretta ma non il giorno corretto value.Why ..?

Quello che voglio giorno è la data di lunedì per la settimana corrente che può essere generata in qualsiasi giorno della settimana. così quello che ho fatto è stato, sto prendendo il giorno di oggi e il confronto con (lun, mar .... Sole) e la creazione di, rispettivamente, un timestamp usando

case "Mon": 

$startdate1=date("d-m-y"); 
$parts = explode('-',$startdate1); 
$startdate2 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+1),$parts[2])); 
$startdate3 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+2),$parts[2])); 
$startdate4 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+3),$parts[2])); 
$startdate5 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+4),$parts[2])); 
$startdate6 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+5),$parts[2])); 
$startdate7 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+6),$parts[2])); 

$dates=array(1 => $startdate1,$startdate2,$startdate3,$startdate4,$startdate5,$startdate6,$startdate7); 
$i=1; 
while($i <= 7) 
{ 
echo $dates[$i]; 
$i++; 
} 
break; 

$ data è la matrice finale rispettivamente a oggi che ha essere restituito. C'è qualche altro metodo migliore per fare questa operazione.

risposta

2

cosa ho fatto per risolverlo viene usato il formato data ('d-m-Y') invece di ('d-m-y') in funzione della data, che stava causando il problema.Quindi strtotime ha accettato il formato e ha dato il risultato corretto per

$t=date('d-m-Y'); 
echo date("D",strtotime($t)); 
0

si rischia passando una stringa come timestamp

echo $x."<br>"; 
echo date("D",$x)."<br>"; 

Rimuovere $x e il risultato sarà il giorno corretto o cambiarlo in

$x = '21-02-2010'; 
echo date('D', strtotime($x)); 
+0

Ancora l'output è Thu per $ x = '21 -02-2010 '; –

+0

sì, questa volta è quella giusta ... :) Grazie –

2

quello che ho provato è qui ...

echo date("D",$x)."<br>";

date prevede un valore di timestamp (int) come secondo parametro. Il tuo $x è una stringa contenente un formato di data ambiguo. Convertire prima tale data in una data e ora, utilizzando strptime o strtotime e utilizzare la funzione date correttamente per ottenere il valore di giorno corretto.

quanto riguarda la tua seconda parte, non c'è bisogno di (e non deve) controllare il nome giorno per calcolare la corretta Lunedi, Martedì ecc Un approccio più efficiente è ad esempio utilizzando strtotime per ottenere last Monday etc.

+0

data di eco ("D", strtotime ($ x, 1)). "
"; anche questo non sta dando una risposta corretta. –

+0

questa volta hai capito bene ... :) Grazie –

4

ne dite di questo:

//today is monday 
if (1 == date('N')){ 
    $monday = time(); 
}else{ 
    $monday = strtotime('last Monday'); 
} 

for ($i = 0; $i < 7; $i++){ 
    echo date('d-m-Y', $monday) . '<br>'; 
    $monday = strtotime('tomorrow', $monday); 
} 

prima trovare Lunedi, se non lo è oggi, quindi stampare 7 date

+0

se (1 == date ('N')) cosa è 'N' in questa linea ... puoi spiegarmi il codice un po 'di più .. .? –

+0

N è la rappresentazione numerica per il giorno della settimana. Vedere http://uk2.php.net/manual/en/function.date.php –

+0

http://php.net/manual/en/function.date.php –

3

Wh a voglio giorno è la data di lunedì per la settimana corrente che può essere generato in qualsiasi giorno della settimana.

Questo è quello che vuoi. $mday è il mese del lunedì di questa settimana. Non importa se non è positivo, mktime gestirà tale diritto. $monday ha il timestamp della mezzanotte di lunedì.

$now = getdate(); 
$mday = $now['mday'] - ($now['wday'] + 6) % 7; 
$monday = mktime(0, 0, 0, $now['mon'], $mday, $now['year']); 
echo(date('d-m-y', $monday)); 
+0

Sembra un duro lavoro da trovare lo scorso lunedì :) –

+1

Inoltre non potrebbe mai esistere: http://www.last-th Thursday.org/ – codeholic

11

Ho provato questo per ottenere il giorno corrente.

echo date('l'); // output: current day. 
+0

Grazie .. Risposta perfetta .. – VishalParkash

0

Io uso la data funzione e il percorso per la "D" che si riferiscono alle varie giorno corrente, e funziona con me

$today = date("D"); 

e per ottenere la piena informazioni circa la data corrente

$today = date("D M j G:i:s T Y");    // Sat Mar 10 17:16:18 MST 2001 
Problemi correlati