2010-08-31 21 views
13

Dada la siguiente horaCadena:PHP - ¿Cómo obtener el año, mes, día de la cadena de tiempo

$str = '2000-11-29'; 

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

cómo obtener el año/mes/día en PHP?

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

No sé por qué obtengo 1969 para el año.

Gracias

Respuesta

25

Puede utilizar strtotime para analizar una cadena de tiempo, y pasar la marca de tiempo resultante para getdate (o utilizar date para dar formato a su tiempo).

$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!'; 
} 

Tenga en cuenta que strtotime regresará false si la cadena de tiempo no es válida o no se puede analizar. Cuando la marca de tiempo que intentas analizar no es válida, terminas con la fecha 1969-12-31 que encontraste antes.

+0

Muchas gracias – q0987

8

Actualización: Se olvidó de añadir punto y coma al final de la primera línea, intente esto:

<?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  
?> 

suerte que te va!

1

Usando el estilo de programación orientada a objetos, se puede hacer esto con DateTime class

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

A continuación, se puede descomponer la fecha utilizando el método

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

format() Si prefiere el formato numérico, en lugar del formato de cadena, puede usar el intval() función

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

Aquí algunos formatos que se pueden utilizar

  • Y A plena representación numérica de un año, 4 dígitos
  • m mes del año, 2 dígitos con ceros a la izquierda
  • d Día del mes, 2 dígitos con ceros a la izquierda
  • H Formato de 24 horas de una hora, 2 dígitos s con ceros a la izquierda
  • i Minutos, 2 dígitos con ceros a la izquierda
  • s segundos, 2 dígitos con ceros a la izquierda

Aquí la lista completa de los formatos que se pueden utilizar: http://php.net/manual/en/function.date.php

3

PHP - Cómo obtener año, mes, día de la cadena de tiempo

$dateValue = strtotime($q);      

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

es una práctica de código para explicar la respuesta también para que los futuros lectores puedan ser beneficiados –

Cuestiones relacionadas