Tengo un formulario que pasa dos fechas (inicio y finalización) a un script PHP que las agregará a una base de datos. Tengo problemas para validar esto. Sigo recibiendo los siguientes errores
Un valor numérico no bien formado encontrado
Aquí es cuando uso lo siguiente
date("d",$_GET['start_date']);
Pero cuando uso la función strtotime () como lo recomiendan muchos sitios, obtengo una fecha de marca de tiempo de Unix de 1/1/1970. ¿Alguna idea de cómo puedo obtener la fecha correcta?
php
validation
date
time
Deviland
fuente
fuente
$_GET['start_date']
contiene.$_GET['start_date']
no es una marca de tiempo que se espera pordate
función como segundo argumentoRespuestas:
Porque está pasando una cadena como segundo argumento a la función de fecha, que debería ser un número entero.
Pruebe strtotime, que analizará cualquier descripción textual de fecha y hora en inglés en una marca de tiempo de Unix (entero):
fuente
public function __construct(int $someId....)
Simplemente puede resolver este problema usando la
strtotime()
función.fuente
$_GET['start_date']
no es numérico es mi apuesta, pero un formato de fecha no es compatible constrtotime
. Deberá volver a formatear la fecha a un formato viable para strtotime o usar una combinación de explode / mktime .Podría agregarle un ejemplo si tuviera la amabilidad de publicar el formato que recibe actualmente.
fuente
Me encontré con esta misma situación (en mi caso con un valor de fecha en un campo PHP personalizado en una vista de Drupal), y lo que funcionó para mí fue usar intval en lugar de strtotime para convertir el valor en un número entero, porque básicamente era una marca de tiempo , pero en forma de cadena en lugar de un número entero. Obviamente, ese no será el caso para todos, pero valdría la pena intentarlo.
fuente
Este error ocurre cuando realizas cálculos con variables que usan letras combinadas con números (alfanuméricos), por ejemplo 24kb, 886ab ...
Tuve el error en la siguiente función
La aplicación carga imágenes pero no funcionó, mostró la siguiente advertencia:
Solución: La
intval()
función extrae el valor entero de una variable con datos alfanuméricos y crea una nueva variable con el mismo valor pero convertida a un entero con laintval()
función. Aquí está el código:fuente
Esto me ayudó mucho -
fuente
Esta es una vieja pregunta, pero hay otra forma sutil en la que este mensaje puede ocurrir. Se explica bastante bien aquí, en los documentos .
Imagina este escenario:
Y
MyCustomExceptionHandler
se define aproximadamente como:En realidad, esto activará una nueva excepción en el controlador de excepciones personalizado porque la
Exception
clase espera un número para el segundo parámetro en su constructor, peroPDOException
podría haber cambiado dinámicamente el tipo de retorno de$e->getCode()
a una cadena.Una solución alternativa para esto sería definir su controlador de excepciones personalizado como:
fuente
Pasar una cadena no es necesariamente un problema, si solo contiene dígitos.
Otra razón por la que esto puede suceder es si tiene un espacio antes o después. Por ejemplo, "1557399276"
fuente
Si el error se produce en el momento de realizar algún cálculo, verifique que los valores no contengan ninguna coma (,). Los valores deben estar solo en formato entero / flotante.
fuente
Necesita establecer la zona horaria usando date_default_timezone_set ().
fuente
En mi caso fue la clave para sem_get
$ key debe ser un int, de lo contrario, obtendrá el siguiente error:
fuente
si $ _GET ['start_date'] es una cadena, conviértala en entero o doble para tratar numéricamente.
fuente