Foros del Web » Programando para Internet » PHP »

Comparar día, mes y año

Estas en el tema de Comparar día, mes y año en el foro de PHP en Foros del Web. Hola a todos tengo una base de datos con los siguientes campos fecha (tipo date) y fecha cierre (esta última tipo varchar) ya que mando ...
  #1 (permalink)  
Antiguo 07/02/2012, 18:14
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Comparar día, mes y año

Hola a todos tengo una base de datos con los siguientes campos fecha (tipo date) y fecha cierre (esta última tipo varchar) ya que mando insertar desde un jquery si la dejo en tipo date me inserta 0000-00-00... (Asi que es tipo varchar )


tengo el siguiente script para comparar fechas
<?
$fechaactual = Date("d/m/Y");
$fechaevento = $row_alumnos['fechacierre'];
if ($fechaactual >= $fechaevento) {
echo '<img src="img/cerrado.png" width="25" height="25" border="0" alt="" />';
} else {
echo '<img src="img/abierto.png" width="25" height="25" border="0" alt="" />';
}

?>

Funciona aparentemente Bien pero por ejemplo hoy es 7/02/12 si mi fecha cierre es 11/02/12 me muestra la imagen abierto esta bien hasta ahi
...
pero si comparo 7/02/12 con 6/03/12 me muestra la imagen cerrado, en cambio comparando con 8/03/12

Ahora se me ocurre hacer el script comparando día , mes y año ...
alguna idea????
  #2 (permalink)  
Antiguo 07/02/2012, 18:34
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Comparar día, mes y año

No se pueden comparar fechas de esa forma, tiene que ser en formato Unix timestamp. Además es pésima idea tener una fecha en campo tipo varchar. Para que no te salgan 0000-00-00 tienes que insertar correctamente la fecha YYYY-MM-DD, si es necesario necesitas invertir o convertir esta fecha al formato correcto. También puedes manejarla en un campo TIMESTAMP.

Para convertir a unix una fecha puedes usar funciones como time() para la fecha actual, strtotime(), mktime() etc...

También es posible hacer esta comprobación desde MySQL.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 07/02/2012, 19:14
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Comparar día, mes y año

Cita:
Iniciado por andresdzphp Ver Mensaje
No se pueden comparar fechas de esa forma, tiene que ser en formato Unix timestamp. Además es pésima idea tener una fecha en campo tipo varchar. Para que no te salgan 0000-00-00 tienes que insertar correctamente la fecha YYYY-MM-DD, si es necesario necesitas invertir o convertir esta fecha al formato correcto. También puedes manejarla en un campo TIMESTAMP.

Para convertir a unix una fecha puedes usar funciones como time() para la fecha actual, strtotime(), mktime() etc...

También es posible hacer esta comprobación desde MySQL.

Saludos.
Hola gracias por tu pronta respuesta
este es mi script para el calendario e insertar fechacierre
<script type="text/javascript">
jQuery(function($){
$.datepicker.regional['es'] = {
closeText: 'Cerrar',
prevText: '&#x3c;Ant',
nextText: 'Sig&#x3e;',
currentText: 'Hoy',
monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
'Julio','Agosto','Septiembre','Octubre','Noviembre ','Diciembre'],
monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
'Jul','Ago','Sep','Oct','Nov','Dic'],
dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jue ves','Viernes','S&aacute;bado'],
dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacu te;b'],
dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
weekHeader: 'Sm',
dateFormat: 'dd/mm/yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''};
$.datepicker.setDefaults($.datepicker.regional['es']);
});

$(document).ready(function() {
$("#txtFechaSimple").datepicker();
});
</script>
mi fecha queda asi dateFormat: 'dd/mm/yy', por eso la mando como varchar
ahora este es mi input no se que debo hacerle para convertir mi fecha a tipo Date
<input name="txtFechaSimple" type="text" class="input1" size="10" id="txtFechaSimple" />

Que puedo hacer ????
  #4 (permalink)  
Antiguo 07/02/2012, 19:34
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Comparar día, mes y año

Para obtener el formato correcto, cambia:

Código Javascript:
Ver original
  1. dateFormat: 'dd/mm/yy',

por


Código Javascript:
Ver original
  1. dateFormat: 'yy-mm-dd',

Así lo agregas correctamente a MySQL y podrás hacer comprobaciones de fecha más fácilmente.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 08/02/2012, 13:22
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Comparar día, mes y año

Hola gracias por responder he insertado el campo fechacierre como tipo Date...
pero sigo con el mismo problema

He hecho estos cambios al script
Código PHP:
  <? 
        $fechaactual 
Date("d/m/Y");
$fechaevento $row_alumnos['fechacierre'];
 
$timestamp strtotime($row_alumnos['fechacierre']); 
      
$fecha date("d/m/Y"$timestamp);
if (
$fechaactual >= $fecha) {
  echo 
'<img src="img/cerrado.png" width="25" height="25" border="0"  alt="" />';
} else {
  echo 
'<img src="img/abierto.png" width="25" height="25" border="0"  alt="" />';
}

  
?>
Pero no consigo que me quede tengo el mismo error por ejemplo hoy es 9/02/2012
si mi fechacierre es = a 1/03/12
me muestra el icono cerrado.... ya no se me ocurre como comparar fechas... ayuda por fis
  #6 (permalink)  
Antiguo 08/02/2012, 13:26
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Comparar día, mes y año

Para comparar los 2 tienen que estar en unix timestamp, así se compara con PHP:

Código PHP:
Ver original
  1. <?php  
  2. $fechaactual = time();
  3. $timestamp = strtotime($row_alumnos['fechacierre']);
  4.  
  5. if ($fechaactual >= $timestamp) {
  6.     echo '<img src="img/cerrado.png" width="25" height="25" border="0"  alt="" />';
  7. } else {
  8.     echo '<img src="img/abierto.png" width="25" height="25" border="0"  alt="" />';
  9. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 08/02/2012, 17:37
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Comparar día, mes y año

Cita:
Iniciado por andresdzphp Ver Mensaje
Para comparar los 2 tienen que estar en unix timestamp, así se compara con PHP:

Código PHP:
Ver original
  1. <?php  
  2. $fechaactual = time();
  3. $timestamp = strtotime($row_alumnos['fechacierre']);
  4.  
  5. if ($fechaactual >= $timestamp) {
  6.     echo '<img src="img/cerrado.png" width="25" height="25" border="0"  alt="" />';
  7. } else {
  8.     echo '<img src="img/abierto.png" width="25" height="25" border="0"  alt="" />';
  9. }
Mil Gracias por tu ayuda :)
  #8 (permalink)  
Antiguo 09/02/2012, 12:58
 
Fecha de Ingreso: noviembre-2010
Ubicación: cancun
Mensajes: 19
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Comparar día, mes y año

para insertar en un una columa de tipo date, el formato de la fecha tiene que ser ingles es decir 2012-02-07

Última edición por laloisla; 09/02/2012 a las 13:05 Razón: mala redaccion

Etiquetas: año
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:15.