PHP - Recoger fecha para poder manipularla

 
Vista:
sin imagen de perfil

Recoger fecha para poder manipularla

Publicado por Victor (7 intervenciones) el 09/05/2017 13:16:25
Buenas! tengo esta parte de código donde quiero sacar la fecha que esta en play se como recorrerlo pero necesito transformarla a Año-Mes-Dia Hora:min:segundos y a partir de ahi manipularla alguna solución?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
 
	$con = null;
	$idMod = "";
 
	include ("Conexion.php");
 
	$c = new ConexionBD();
	$con = $c->conectarse();
 
	$tsql = "SELECT idAccion, play, pause from TiempoAcciones T1 where
					(NOT EXISTS 
					(select * FROM TiempoAcciones T2 WHERE (T2.Pause > T1.PLAY OR T2.STOP > T1.PLAY)AND t1.idAccion = t2.idAccion) and T1.PLAY IS NOT NULL)
 					OR
  					(NOT EXISTS
  					(SELECT * FROM TiempoAcciones T2 WHERE (T2.PLAY > T1.Pause OR T2.Stop > T1.Pause) and  t1.idAccion = t2.idAccion)and T1.Pause IS NOT NULL)
					AND t1.play <= DATEDIFF(d, -1, SYSDATETIME());";
 
	$stmt = sqlsrv_query($con,$tsql);
 
	if( $stmt === false ){
		echo "Error al ejecutar consulta.</br>";
		die( print_r( sqlsrv_errors(), true));
	}
 
	while($row = sqlsrv_fetch_array($stmt)){
 
	}
 
	return $stmt;
	sqlsrv_free_stmt($stmt);
	sqlsrv_close($con);
 
?>


De esta parte es donde quiero sacar la fecha y empezar a manipularla:

1
2
3
while($row = sqlsrv_fetch_array($stmt)){
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Recoger fecha para poder manipularla

Publicado por Victor (7 intervenciones) el 09/05/2017 13:34:29
He conseguido sacarla pero me devuelve la fecha inicial 1970-01-01 01:00:00 que es lo que estoy haciendo mal?.Gracias

1
2
3
4
5
6
7
8
9
while($row = sqlsrv_fetch_array($stmt)){
	$fecha = $row['play'];
}
 
echo (convertirFecha($fecha));
 
function convertirFecha($fecha){
	return date('Y-m-d H:i:s', strtotime($fecha));
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Recoger fecha para poder manipularla

Publicado por xve (6935 intervenciones) el 09/05/2017 16:05:22
Hola Victor, el problema que veo, es que devolverá la ultima fecha de los registros que devuelva la consulta sql.

Si te devuelve 1970-01-01, es porque no recibe ninguna fecha correcta!!

Puedes revisar que la fecha tenga un valor correcto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Recoger fecha para poder manipularla

Publicado por Victor (7 intervenciones) el 09/05/2017 16:21:36
Desde la base de datos el resultado de la consulta es este:


2l8af82

y desde el codigo al hacer un echo o mostrarlo con var_dump de $row['play'] me devuelve fecha, es decir no esta vacío.

La funcion convertirFecha la tengo cambiada ahora :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
while($row = sqlsrv_fetch_array($stmt)){
		$fecha = $row['play'];
		var_dump($fecha) ;
	}
 
	function convertirFecha($fecha){
		$tiempo = Datetime::createFromFormat('Y-m-d H:i:s', "$fecha");
 
		if(is_bool($tiempo)){
			$tiempo->Datetime::createFromFormat('Y-m-d H:i:s');
		}
 
		return $tiempo;
	}

ahora con esta función así me sale el siguiente error :S


syntax error, unexpected '::'(T_PAAMAYIM_NEKUDOTAYIM) on line 37

La linea 37 es esta :

1
2
3
if(is_bool($tiempo)){
	$tiempo->Datetime::createFromFormat('Y-m-d H:i:s');
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Recoger fecha para poder manipularla

Publicado por Victor (7 intervenciones) el 09/05/2017 17:23:11
Arreglado, pero esta vez la función convertirFecha() me devuelve booleano( falso) si intento imprimir la función con var_dump()(No se si voy por buen camino con esta función para poder trocear la fecha que me devuelve :S ).

1
2
3
4
5
6
7
8
9
10
11
function convertirFecha($fecha){
		$tiempo = Datetime::createFromFormat('Y-m-d H:i:s', "$fecha");
 
		if(is_bool($tiempo)){
			$tiempo= Datetime::createFromFormat('Y-m-d H:i:s',"$fecha");
		}
 
		return $tiempo;
	}
 
var_dump(convertirFecha($fecha));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar