Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Dia de la semana segun fecha insertada

Estas en el tema de Dia de la semana segun fecha insertada en el foro de PHP en Foros del Web. Estoy intentando la forma de poder sacar que día es según la fecha insertada en la BD. En la BD meto una fecha a traves ...
  #1 (permalink)  
Antiguo 10/03/2014, 13:23
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Dia de la semana segun fecha insertada

Estoy intentando la forma de poder sacar que día es según la fecha insertada en la BD.

En la BD meto una fecha a traves de un calendario en un formulario con formato: DD/MM/AAAA y la tengo VARCHAR (10)

Y bien lo que quiero es que en algunos apartados en vez de mostrarme esa fecha (10/03/2014), muestre que dia tiene esa fecha (Lunes).

He probado varios y bueno no consigo hacerlo funcionar y queria una ayudita o consejo a ver...

Pero claro con esto muestro que día es hoy no el de la BD pero con otras funciones no consigo hacerlo funcionar como por ejemplo mktime, strftime...

Código PHP:
$arrayDias = array( 'Domingo''Lunes''Martes',
       
'Miercoles''Jueves''Viernes''Sabado');

echo: 
'.$arrayDias[date('w')].' 
Alguna sugerencia o ayuda?

Gracias
  #2 (permalink)  
Antiguo 10/03/2014, 13:27
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Dia de la semana segun fecha insertada

Prueba estos enlaces:
http://lmgtfy.com/?q=php+day+of+week
http://php.net/manual/es/function.date.php
__________________
Dicen que las personas piensan en su lengua materna, yo lo hago en PHP
  #3 (permalink)  
Antiguo 10/03/2014, 14:16
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Dia de la semana segun fecha insertada

Pero no intento ponerlo si en la consulta de la BD me lo muestra así:

10/03/2014 como meto ese dato por ejemplo en:

Código:
'. date("l", mktime(0, 0, 0, 3, 10, 2014)).'
así?

Código:
'. date("l", mktime(0, 0, 0, $fecha)).'
  #4 (permalink)  
Antiguo 10/03/2014, 14:55
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Dia de la semana segun fecha insertada

No lo consigo teniendo en cuenta que traigo la fecha de una variable

$Fecha = $row['Fecha'] porque las fechas que me esta cogiendo son del sistema..

Algun ejemplo o alguna pista que me ayude a poder sacarlo?


Gracias!!!
  #5 (permalink)  
Antiguo 10/03/2014, 15:41
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Dia de la semana segun fecha insertada

Prueba:
Código PHP:
date("l"strtotime($fecha)); 
__________________
Dicen que las personas piensan en su lengua materna, yo lo hago en PHP
  #6 (permalink)  
Antiguo 10/03/2014, 15:59
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Dia de la semana segun fecha insertada

Una forma rápida de separar los datos de la fecha es utilizando la función explode:

Código PHP:
Ver original
  1. $fecha = explode('-', $row['Fecha']);

Con esto, $fecha se convierte en un array en donde el año, mes y día son sus componentes.

Código PHP:
Ver original
  1. $fecha[0] //Año
  2. $fecha[1] //Mes
  3. $fecha[2] //Día

Teniendo estos datos, ahora puedes averiguar el día de la semana aplicando las funciones date y mktime.

Código PHP:
Ver original
  1. echo date("l", mktime(0, 0, 0, $fecha[1], $fecha[2], $fecha[0]));

Sin embargo, si deseas que el nombre del día de la fecha se vea en español, es mejor hacerlo así:

Código PHP:
Ver original
  1. setlocale(LC_ALL, 'esp');
  2. echo strftime('%A', mktime(0, 0, 0, $f[1], $f[2], $f[0]));

Con la función setlocale, estableces la información de la configuración regional, en donde LC_ALL significa Para todos los siguientes o dicho de otro modo, para toda la configuración, mientras que esp establece la configuración en español. Con la función strftime, damos formato a la fecha, en donde %A representa el nombre del día.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 10/03/2014, 16:46
Avatar de xpapachox  
Fecha de Ingreso: junio-2011
Mensajes: 77
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Dia de la semana segun fecha insertada

Código PHP:
 SELECT CONCAT (
     CASE 
DAYOFWEEK(now())
     
WHEN 1 THEN 'Domingo'
     
WHEN 2 THEN 'Lunes'
     
WHEN 3 THEN 'Martes'
     
WHEN 4 THEN 'Miércoles'
     
WHEN 5 THEN 'Jueves'
     
WHEN 6 THEN 'Viernes'
     
WHEN 7 THEN 'Sábado'
     
END
     
,', 'DATE_FORMAT(now(), '%d'), ' de ',
     CASE 
MONTH(now())
     
WHEN 1 THEN 'Enero'
     
WHEN 2 THEN 'Febrero'
     
WHEN 3 THEN 'Marzo'
     
WHEN 4 THEN 'Abril'
     
WHEN 5 THEN 'Mayo'
     
WHEN 6 THEN 'Junio'
     
WHEN 7 THEN 'Julio'
     
WHEN 8 THEN 'Agosto'
     
WHEN 9 THEN 'Septiembre'
     
WHEN 10 THEN 'Octubre'
     
WHEN 11 THEN 'Noviembre'
     
WHEN 12 THEN 'Diciembre'
     
END' de 'DATE_FORMAT(now(), '%Y')) fecha_completa 
  #8 (permalink)  
Antiguo 10/03/2014, 17:09
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: Dia de la semana segun fecha insertada

Cita:
Iniciado por RaulCDT Ver Mensaje
No lo consigo teniendo en cuenta que traigo la fecha de una variable

$Fecha = $row['Fecha'] porque las fechas que me esta cogiendo son del sistema..

Algun ejemplo o alguna pista que me ayude a poder sacarlo?


Gracias!!!
Puedes hacer algo como lo siguiente usando la clase DateTime(): http://www.php.net/manual/en/book.datetime.php.
Código PHP:
Ver original
  1. $fecha = '10/03/2014'; //lo sacas de tu base de datos como $row['Fecha']
  2. $date = new DateTime($fecha, new DateTimeZone('America/Lima'));
  3. echo $date->format('l');
O puedes tener también
Código PHP:
Ver original
  1. etlocale(LC_ALL,'es_ES');
  2. $fecha = '10/03/2014';
  3. $date = new DateTime($fecha, new DateTimeZone('America/Lima'));
  4. echo strftime('%A', $date->getTimeStamp());
:
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Última edición por hhs; 10/03/2014 a las 17:23
  #9 (permalink)  
Antiguo 11/03/2014, 07:47
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Dia de la semana segun fecha insertada

Quizas este haciendolo mal... a ver si alguno puede seguir guiandome..

He puesto:

Código PHP:
<?php
    
   $result
=mysql_query("select * from tabla where new.Id='".$_GET['Id']."' and CM_new.Validado like '%si%'",$link);     
 while(
$row mysql_fetch_array($result))

$fechaexplode ('/' ,$row['Fecha'] );
$fecha = array($fecha[0], $fecha[1], $fecha[2]);
 
setlocale(LC_ALL"es_ES");

switch(
$_GET['cm']) {
case 
'info':

echo 
'<div class="detalles">   

texto
      </div>'
;
mysql_free_result($result);
  
mysql_close($link);
break;

case 
'prox':
 print 
'
 <div class="detalles">   
          <h1 ><b> strftime('
%A', mktime(0, 0, 0, $fecha[1], $fecha[2], $fecha[0]))</b>  - '.$row['LG'].'</h1>  
         
            
</div>
'
;
break;
No encuentro el error que me da la fecha... porque ahora no me muestra nada tampoco.. (error de sintaxis)

El strftime('%A', mktime(0, 0, 0, $fecha[1], $fecha[2], $fecha[0])) lo estoy poniendo mal?

Gracias!
  #10 (permalink)  
Antiguo 11/03/2014, 08:53
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Dia de la semana segun fecha insertada

Quizas poniendolo así:

Código PHP:
print '<div>   
'
.strftime("%A"mktime(0003102014)).' - '.$row['LG'].
</div>'
;

Me pone que es lunes.. pero para poner la fecha desde la BD y me lo arroje al strftime creo que no llega.. (al no tener experiencia en el código quizás desconozca algunos pequeños errores que estoy cometiendo)

Código PHP:
$fechaexplode ('/' ,10/03/2014 ); // '.$row['Fecha'].' pondría esto en vez de 10/03/2014

print strftime("%A"mktime(000$fecha[1], $fecha[2], $fecha[0])); 
  #11 (permalink)  
Antiguo 11/03/2014, 09:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Dia de la semana segun fecha insertada

Generalmente, la fecha se guarda en la BD con el formato Año-Mes-Día (0000-00-00), por lo que $row['Fecha'], debería tener dicho formato. De no ser así y en su lugar tenga la forma Día/Mes/Año (00-00-0000), los valores de $fecha serían los siguientes:

Código PHP:
Ver original
  1. $fecha= explode ('/' , $row['Fecha']);
  2.  
  3. //$fecha[0] = Día
  4. //$fecha[1] = Mes
  5. //$fecha[2] = Año
  6.  
  7. print strftime("%A", mktime(0, 0, 0, $fecha[1], $fecha[0], $fecha[2]));

Lo anterior debe imprimir el nombre del día, sea cual sea la fecha que recojas de la BD.

Por cierto, esto está mal:

Código PHP:
Ver original
  1. $fecha = array($fecha[0], $fecha[1], $fecha[2]);

Con la función explode, ya creas un array, así que no es necesario incluir los datos del array resultante en otro.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #12 (permalink)  
Antiguo 12/03/2014, 03:49
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Dia de la semana segun fecha insertada

Gracias a todos por vuestros aportes... ya me funciona la fecha correctamente..

Pero ahora, porque no me muestra el resto de datos y solo la fecha y no tambien el resto de datos?

Código PHP:
  $result=mysql_query("select * from tabla where Id='".$_GET['Id']."' and Validado like '%si%'",$link);     
 while(
$row mysql_fetch_array($result))

$fechaexplode ('/' ,$row['Fecha'] );
setlocale(LC_ALL"es_ES");

switch(
$_GET['cm']) {

case 
'prox':
 print 
'
 <div >   
          <h1><b>'
.ucwords(strftime('%A'mktime(000$fecha[1], $fecha[0], $fecha[2]))).'</b>  - '.$row['LG'].</h1
Donde podria colocar mejor el

Código PHP:
$fechaexplode ('/' ,$row['Fecha'] );
setlocale(LC_ALL"es_ES"); 
Gracias!

Etiquetas: dia, fecha, formulario, semana
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 03:48.