Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Manejo adecuado de fechas

Estas en el tema de Manejo adecuado de fechas en el foro de Symfony en Foros del Web. Hola, trabajo en el desarrollo de una aplicación en la que es crucial el manejo adecuado de fechas para el cálculo de la edad gestacional ...
  #1 (permalink)  
Antiguo 26/03/2017, 18:01
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Manejo adecuado de fechas

Hola, trabajo en el desarrollo de una aplicación en la que es crucial el manejo adecuado de fechas para el cálculo de la edad gestacional de las embarazadas expresado en semanas, ejemplo: 40.6 semanas; es decir 40 semanas completas y 6 días de la siguiente; así como el cálculo de edad infantil para menores de 1 año, expresado en días o meses y días, ejemplo 6 meses y 4 días. En mis entidades los atributos los declaro de tipo DATE, ya que no necesito el componente hora - minuto.
En algunos action he tenido que formar fechas para hacer consultas en rangos ya que doctrine no maneja las funciones DATEPART, MONTH o YEAR, creo tendría que configurar alguna extensión, o comparativos de tipo e.fpp < :paramFecha.
Ahora bien, cada vez que debo formar alguna fecha, le paso al constructor de DateTime un formato 'm/d/Y', por ejemplo:
Código PHP:
$fecha=new DateTime("1/24/2017"); 
o para evitar errores en otros casos m'as puntuales lo manejo de la siguiente manera:
Código PHP:
$fecha=new DateTime('today');
$fecha->modify('- 6 month'); 
Al final me he dado cuenta que en los Repository al completar el parámetro de fecha, pasado desde el action o como propiedad de alguna entidad pasada como argumento a la function del repository hago lo siguiente:
Código PHP:
$query->setParameter('fechaInicio'$fecha->format('Y-m-d')); 
ó
Código PHP:
$fum=$entidad->getFum();
$query->setParameter('fechaInicial'$fum->format('Y-m-d')); 
Casualmente en un Repository, pasé un parámetro fecha de la siguiente forma:
Código PHP:
$query->setParameter('fechaInicio'$fecha->format('d/m/Y')); 
y al probar en un SGBD MySQL la consulta no dio error pero no arrojaba resultados, al cambiar el formato a 'Y-m-d', pues funciona bien tanto en MySQL como en Postgres.

Igualmente, pudiera dejar de la siguiente forma:
Código PHP:
$query->setParameter('fechaInicio'$fecha); 
y al ser un campo de tipo DATE pues la consulta runable que veo en el profiler completa las fechas de la siguiente forma: '2017-04-01 00:00:00'

Mi duda es si creando las fechas en el action de la forma new \DateTime("m/d/Y") y en los repository pasando el objeto fecha o $fecha->format('Y-m-d') debería funcionar tanto en MySQL como POstgres.
  #2 (permalink)  
Antiguo 27/03/2017, 09:17
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Manejo adecuado de fechas

Cita:
Mi duda es si creando las fechas en el action de la forma new \DateTime("m/d/Y") y en los repository pasando el objeto fecha o $fecha->format('Y-m-d') debería funcionar tanto en MySQL como POstgres.
Es correcto, siempre que pases al formato Y-m-d debe de funcionar todo correctamente.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 27/03/2017, 17:31
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Manejo adecuado de fechas

hhs gracias, tendré entonces el cuidado de no pasar otro tipo de formato.

Etiquetas: manejo
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




La zona horaria es GMT -6. Ahora son las 01:21.