Quiero una lógica si $ due es igual a ninguna fecha, entonces quiero datos comenzando con 2000. Mi código a continuación no está funcionando.
if($due == '0000-00-00 00:00:00'){
$due = strtotime('2000-00-00 00:00:00');
}
Quiero una lógica si $ due es igual a ninguna fecha, entonces quiero datos comenzando con 2000. Mi código a continuación no está funcionando.
if($due == '0000-00-00 00:00:00'){
$due = strtotime('2000-00-00 00:00:00');
}
Si va a guardar strtotime() en $ debido, a continuación, es necesario comparar de esa manera, también
if($due == strtotime('0000-00-00 00:00:00')){
$due = strtotime('2000-00-00 00:00:00');
}
o, más simplemente
if($due == 0){
$due = strtotime('2000-00-00 00:00:00');
}
pero si $ debido viene de su base de datos como una cadena, le gustaría strtotime():
$due = strtotime($due);
if($due == 0){
$due = strtotime('2000-00-00 00:00:00');
}
Sin embargo, tenga en cuenta las zonas horarias. Es decir, strtotime ('0000-00-00 00:00:00 UTC')! = Strtotime ('0000-00-00 00:00:00 EST'). Esto también podría romper tu comparación.
strtotime ('0000-00-00 00:00:00') puede devolver menos valor, nulo, falso depende de la versión de PHP – XuDing
Debe asegurarse de estar comparando los valores en el mismo formato. Con lo que tiene actualmente, una de tres cosas sucederá:
$due
es un int
, la cadena que se está comparando con 0000-00-00 00:00:00
se convertirá en un int
, lo que resultará en 0
y $due
habrá comparado con 0
. Esto solo dará como resultado una coincidencia si es $due === 0
.$due
es una bool
, la cadena se convierte en un bool
, lo que resultará en TRUE
, y sólo se obtendrá un partido si $due === TRUE
.$due
es de cualquier otro tipo, se convertirá en una cadena y los dos se compararán como cadenas. Solo obtendrá una coincidencia si $due === '0000-00-00 00:00:00'
.Si dijera que probablemente necesite comparar los valores como enteros. Esto significa que debe pasar cadenas a través del strtotime()
, incluido $due
, si se trata de una cadena. Como no muestra un valor de ejemplo de $due
, no puedo proporcionar un código de trabajo exacto.
strtotime(YourDate) != NULL
funciona bien también.
Estaba trabajando en una sección DOB y DOM (fecha de matrimonio) de una base de datos. Parece que el valor predeterminado NULL guardó una fecha como 0000-00-00 Lo cual es algo estúpido para ser honesto.
O tal vez fue mi estupidez convertir el campo en un campo de FECHA en lugar de hacerlo un VARCHAR y mantener el valor STRTOTIME allí.
<?php
if(strtotime($dates->dom) != NULL)
{
echo '<a href="' . base_url() . 'dates/dom/' . $dates->dom . '">' . date('j F, Y',strtotime($dates->dom)) . '</a>';
}
else
{
print 'Not Listed Yet';
} ?></strong>
me gustaría sugerir forma más simple
if(!$due)
$due = strtotime('2000-00-00 00:00:00');
Aquí está la solución para comprobar si el campo de fecha y hora en la base de datos (MySQL) es nulo o '0000-00-00 00:00:00'
seleccionar todos con starttime es nulo o '0000-00-00 00:00:00' y endtime no es (null o '0000-00-00 00:00:00')
Al final de la base de datos
select * from table where IFNULL(MONTH(starttime),0) >= 1 and IFNULL(MONTH(endtime),0) < 1;
en php final
if((int)$starttime && !(int)$endtime){ /// }
Sé que esto es una vieja pregunta, pero esta respuesta puede ayudar a alguien
strtotime devuelve una marca de tiempo en caso de éxito, FALSE de lo contrario.
$test = strtotime($due);
$due = (!$test || $test < 0) ? '2000-00-00 00:00:00' : $due;
unset($test);
respetos.
No sé por qué strtotime no funcionó correctamente para mí. Probablemente sea por la zona horaria y otras cosas.
Como siempre las expresiones regulares de lujo funcionan como un encanto. ¡Soy de alguna manera adicto a eso!
if(preg_match("/0{4}/" , $dbDateField))
{
// no its not acceptable
}
else
{
//ok
}
Proporcione la salida de 'var_dump ($ due);' – Wrikken
¿De dónde viene esta fecha? – webbiedave
Si ha recuperado ese valor de una base de datos, puede ser mejor que realice esta lógica en su consulta. a menos que, es decir, tenga acciones adicionales para realizar dentro del 'if()' –