Autor
|
Tema: [Resuelto] [Pregunta]: Función "is_timestamp" (Leído 3,224 veces)
|
Leguim
Desconectado
Mensajes: 720
|
Buenos días! Busque en internet sobre si existía una función para validar un timestamp cualquiera.. $timestamp = date('Y-m-d H:i:s');
La idea seria validarlo y decir si es un timestamp o no. Una de las funciones que encontré fue esta: function is_timestamp($timestamp) { return ((int)(string) $timestamp === $timestamp) && ($timestamp <= PHP_INT_MAX) && ($timestamp >= ~PHP_INT_MAX); }
Pero no me funciona, vi otras funciones mucho más largas y complicadas y del año 2008 a 2013. Quizás hoy en día hay formas más eficientes de hacer esto y quería ver si alguien podía ayudarme. Gracias!
|
|
« Última modificación: 24 Septiembre 2019, 12:03 pm por #!drvy »
|
En línea
|
|
|
|
MinusFour
|
Esa función no regresa un timestamp. Timestamps son números, date regresa cadenas de caracteres, fechas.
Regresa un timestamp si es una fecha valida o falso si es una fecha que no pudo procesar.
|
|
|
En línea
|
|
|
|
Leguim
Desconectado
Mensajes: 720
|
Entonces debería validar el timestamp, esta bien la función esa es interesante y puede complementarse a lo siguiente. Validar si es un valor numérico "is_numeric" ? pero si me decis que date regresa cadena de caracteres como sería?
|
|
|
En línea
|
|
|
|
MinusFour
|
Entonces debería validar el timestamp, esta bien la función esa es interesante y puede complementarse a lo siguiente. Validar si es un valor numérico "is_numeric" ? pero si me decis que date regresa cadena de caracteres como sería?
No entendí la pregunta. Para que quieres usar is_numeric si no trabajas con timestamps. Lo que has puesto ahí son fechas. Si estuvieras haciendo:
Estarías trabajando con números, con timestamps de verdad. Otra cosa que se me olvido mencionar, si tu quieres valida una fecha contra un formato en específico tienes que usar: Date::createFromFormat('Y-m-d H:i:s', $fecha);
Edit: Ah, si quieres validar que $fecha es un string puedes usar:
Pero creo que no es necesario, PHP probablemente regrese falso si no es un string o una conversión de un string valido.
|
|
« Última modificación: 21 Agosto 2019, 01:04 am por MinusFour »
|
En línea
|
|
|
|
#!drvy
|
esta bien la función esa es interesante y puede complementarse a lo siguiente. Validar si es un valor numérico "is_numeric" ? No tiene ningún sentido validar si es numérico cuando ya estas comprobando que el valor de lo que le das, forzado a un Integer, debe estar en un rango determinado. pero si me decis que date regresa cadena de caracteres como sería? Date regresa la fecha en formato humano. Bueno, en verdad regresa la fecha según el formato que le pasas, en tu caso, le estas pasando un formato de tipo 0000-00-00 00:00:00. Si quieres sacar un timestamp actual, usa time(); PD: Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. Meh xD Saludos
|
|
|
En línea
|
|
|
|
Leguim
Desconectado
Mensajes: 720
|
No tiene ningún sentido validar si es numérico cuando ya estas comprobando que el valor de lo que le das, forzado a un Integer, debe estar en un rango determinado.
Date regresa la fecha en formato humano. Bueno, en verdad regresa la fecha según el formato que le pasas, en tu caso, le estas pasando un formato de tipo 0000-00-00 00:00:00.
Si quieres sacar un timestamp actual, usa time();
PD: Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Meh xD
Saludos
La razón de esto es: digamos que tengo un input que le pido al usuario enviar un timestamp o mejor dicho una fecha que es esta "2019-08-13 00:10:04" ahora el usuario si quiere me puede mandar un "afdasdf" y no quiero eso, o me puede mandar "85934-fasdfasdf" que tampoco quiero... Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. xD ami también me salio eso jaja
|
|
|
En línea
|
|
|
|
#!drvy
|
Vale, pero ahí no quieres validar un UNIX TIMESTAMP, quieres validar un TIMESTAMP. Hay diferencia. En esencia, la palabra "timestamp" signfica marca de tiempo o marca temporal, entonces, puede tener muchas definiciones como es el caso. Lo más habitual en el mundo de la programación, es que cuando menciones timestamp, te refieras a un UNIX TIMESTAMP que son los segundos que han pasado desde el 1 de Enero de 1970. Sin embargo, cuando en dices TIMESTAMP en bases de datos, y más en MySQL y derivados, quieres decir un formato YYYY-MM-DD HH:MM:SS. Entonces, aclarada la confusión, usa lo que te ha pasado el compañero @Minusfour: function is_timestamp($timestamp, $format = 'Y-m-d H:i:s') { $date = DateTime::createFromFormat($format, $timestamp); return ($date && $date->format($format) === $timestamp); } var_dump(is_timestamp ('2019-08-20 23:54:59')); // true var_dump(is_timestamp ('85934-fasdfasdf')); // false
Aunque yo personalmente le pondría otro nombre para evitar confusiones. xD Saludos
|
|
« Última modificación: 21 Agosto 2019, 01:57 am por #!drvy »
|
En línea
|
|
|
|
Leguim
Desconectado
Mensajes: 720
|
Te agradezco mucho jaja
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
|
Dark4ngel
|
7
|
14,172
|
3 Noviembre 2011, 10:42 am
por Dark4ngel
|
|
|
Facebook retirará la función de "Pregunta" de las cuentas personales
Noticias
|
wolfbcn
|
1
|
2,307
|
20 Octubre 2012, 15:28 pm
por crazykenny
|
|
|
Pregunta sobre la funcion "for"
Programación C/C++
|
incur
|
2
|
2,293
|
1 Junio 2013, 01:38 am
por rir3760
|
|
|
[Resuelto] [Pregunta]: ¿cifrar contraseñas con "SHA-512" es una forma segura?
Desarrollo Web
|
Leguim
|
9
|
5,628
|
5 Septiembre 2019, 05:42 am
por Leguim
|
|
|
[Pregunta]: ¿Como puedo reemplazar una función en onclick=""?
Desarrollo Web
|
Leguim
|
1
|
4,506
|
21 Julio 2020, 10:40 am
por #!drvy
|
|