2012-01-05 23 views
7

¿Cómo resolver el error de:Fatal error: Llamada a método no definido DateTime :: createFromFormat()

Fatal error: Call to undefined method DateTime::createfromformat() 

El error está ocurriendo en la línea 35. Esto es lo que mi código lee desde la línea de 31 a 45

// check database for necessary updates 

$update = mysql_query("SELECT * FROM rent WHERE colour='#3C0'"); 
while($row_update = mysql_fetch_array($update)) { 
    $datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
    $datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
    $datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 
    if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) { 
     // date is between do nothing 
    } else { 
     // date is not between so update 
     $update_result = mysql_query("UPDATE rent SET colour='#F0F0F0' WHERE id=" . $row_update['id'] . " && colour='#3C0'"); 
     mysql_close($update_result); 
    } 
} 

¿Cómo puedo resolver esto?

+0

Eliminando esa línea. El error desaparecerá entonces. En general, es una buena idea no llamar a las funciones no definidas, ya que de lo contrario siempre se producirá un error fatal. ¿Probablemente puede vincular la función del manual de PHP que quería llamar para que quede claro lo que intenta hacer? – hakre

+0

O ha cometido un error al copiar el mensaje de error, o no es el archivo: 'createfromformat! = CreateFromFormat' – KingCrunch

+0

Parece que el código funciona bien en mi servidor local – methuselah

Respuesta

20

DateTime::createFromFormat() se introdujo en php 5.3. Y lo más probable es que tengas uno más viejo. Entonces, instale php> = 5.3 y lo hará funcionar.

+0

PHP versión 5.2.9 - Lo estoy ejecutando en un servidor uk2.net – methuselah

+0

¿Existe un enfoque equivalente para los servidores que ejecutan versiones anteriores de PHP (PHP <5.3)? – Sam

+0

@Sam: 'strtotime', no es equivalente, pero podría ayudar – zerkms

5

¿Qué versión de PHP está ejecutando? De acuerdo con PHP, createDateFormat está disponible en versiones> = 5.3.0.

- Edit

Parece que el código estaba usando DateTime incorrectamente, en ese createFromFormat devuelve un objeto, no es una cadena, pero usted debería ser capaz de transponer la DateTime :: createFromFormat() llama con date() llamadas.

// PHP >= 5.3.0 
$datetime_lower = DateTime::createFromFormat('d/m/Y', $min); 
$datetime_upper = DateTime::createFromFormat('d/m/Y', $max); 
$datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']); 

// PHP < 5.3.0 
$datetime_lower = date('d/m/Y', $min); 
$datetime_upper = date('d/m/Y', $max); 
$datetime_compare = date('d/m/Y g:i a', $row_update['pDate']); 

Me parece, sin embargo, que si se trata de marcas de tiempo, puede realizar las operaciones de comparación sin tener que convertir a un formato específico. Si una de las fechas con las que está tratando no está en un formato de marca de tiempo, puede hacer lo siguiente:

$timestamp = strtotime($yourFormattedDateTime); 

// Now with everything in ints, you can do your conditional evals 
+0

PHP versión 5.2.9 - Lo estoy ejecutando en un servidor uk2.net – methuselah

+0

No estoy seguro de por qué se está ejecutando una versión tan antigua, tendrá que ponerse en contacto con ellos para obtener para actualizar, use una llamada de función admitida para la manipulación de fecha/hora para 5.2.9, o busque un nuevo host que esté más actualizado con su software. –

+1

¿Puede recomendar alguna función compatible con llamadas? – methuselah

Cuestiones relacionadas