2010-08-31 16 views
13

Dato il seguente TimeString:PHP - Come arrivare anno, mese, giorno dalle stringa di tempo

$str = '2000-11-29'; 

$php_date = getdate($str); 
echo '<pre>'; 
print_r ($php_date); 
echo '</pre>'; 

Come ottenere l'anno/mese/giorno in PHP?

[seconds] => 20 
[minutes] => 33 
[hours] => 18 
[mday] => 31 
[wday] => 3 
[mon] => 12 
[year] => 1969 
[yday] => 364 
[weekday] => Wednesday 
[month] => December 
[0] => 2000 

Non so perché ottengo 1969 per anno.

Grazie

risposta

25

È possibile utilizzare strtotime per analizzare una stringa di tempo, e passare il timestamp risultante a getdate (o utilizzare date per formattare il vostro tempo).

$str = '2000-11-29'; 

if (($timestamp = strtotime($str)) !== false) 
{ 
    $php_date = getdate($timestamp); 
    // or if you want to output a date in year/month/day format: 
    $date = date("Y/m/d", $timestamp); // see the date manual page for format options  
} 
else 
{ 
    echo 'invalid timestamp!'; 
} 

Nota che strtotime si restituiscono false se la stringa di tempo non è valido o non può essere analizzato. Quando il timestamp che stai cercando di analizzare non è valido, ti ritrovi con la data del 1969-12-31 che hai incontrato prima.

+0

Grazie mille – q0987

8

Aggiornamento: Ho dimenticato di aggiungere il punto e virgola alla fine della prima linea, provate questo:

<?php  
$str = "2010-08-29"; // Missed semicolon here 
$time = strtotime($str); 

// You can now use date() functions with $time, like 
$weekday = date("l", $time); // Wednesday or whatever date it is  
?> 

Speriamo che vi porterà avanti!

1

Usando lo stile di programmazione orientata agli oggetti, si può fare questo con DateTime class

$dateFormat = 'Y-m-d'; 
$stringDate = '2000-11-29'; 
$date = DateTime::createFromFormat($dateFormat, $stringDate); 

Quindi, è possibile scomporre la data utilizzando il metodo

$year = $date->format('Y'); // returns a string 

format() Se preferite il formato numerico, invece del formato stringa, è possibile utilizzare lo intval() Funzione

$year = intval($date->format('Y')); // returns an integer 

Ecco alcuni formati che è possibile utilizzare

  • Y Una rappresentazione completa numerica di un anno, 4 cifre
  • m mese dell'anno, 2 cifre con zeri iniziali
  • d Giorno del mese, 2 cifre con zeri iniziali
  • H Formato di 24 ore di un'ora, 2 cifre s con zeri
  • i Minuti, 2 cifre con zeri
  • s secondi, 2 cifre con zeri

Ecco l'intera lista dei formati che è possibile utilizzare: http://php.net/manual/en/function.date.php

3

PHP - Come ottenere anno, mese, giorno dalla stringa temporale

$dateValue = strtotime($q);      

$yr = date("Y", $dateValue) ." "; 
$mon = date("m", $dateValue)." "; 
$date = date("d", $dateValue); 
+1

è un codice di pratica per spiegare la risposta anche perché i futuri lettori possano essere avvantaggiati –

Problemi correlati