Foros del Web » Programando para Internet » PHP »

tratamiento fechas

Estas en el tema de tratamiento fechas en el foro de PHP en Foros del Web. Hola chicos. Estoy haciendo un calendario. Yo se que hay muchos por alli ya echos, pero me gusta hacer las cosas yo sola. Tengo una ...
  #1 (permalink)  
Antiguo 27/02/2007, 08:16
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 6 meses
Puntos: 0
tratamiento fechas

Hola chicos.
Estoy haciendo un calendario. Yo se que hay muchos por alli ya echos, pero me gusta hacer las cosas yo sola.
Tengo una pregunta uso date() para saber fecha actual y me pregunto si hay alguna funcion predeterminada en php que me puede decir que tal fecha ( por ejemplo 25 de febrero 2005) era lunes o martes...domingo.
GRacias a todos.
  #2 (permalink)  
Antiguo 27/02/2007, 08:35
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 11 meses
Puntos: 3
Re: tratamiento fechas

Viktoria creo que esto te pueda servir, claro está le hace faltan ajustes para pasarlo a español....

Código PHP:
<?php

$dia 
25;
$mes 2;
$anio 2005;
echo 
date("l $dia, F - Y"mktime(000$mes$dia$anio));

?>
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #3 (permalink)  
Antiguo 27/02/2007, 09:29
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Mensaje Re: tratamiento fechas

Hola

Bueno, pues en español una solución podria ser
Código PHP:
<?
$dia 
25;
$mes 2;
$anio 2007;
//agregar los otros dias
$dias = array("Sunday"=>"Domingo");
//agregar los otros meses
$meses = array("February"=>"Febrero");
$day date("l"mktime(000$mes$dia$anio));
$month date("F"mktime(000$mes$dia$anio));
echo 
$dias[$day].", ".date("$dia"mktime(000$mes$dia$anio))." de ".$meses[$month]." de ".$anio;
?>
Claro que con la funcion de cirujano se obtiene el nombre del dia y el nombre del mes, pero tambien se puede obtener el numero del dia y el numero del mes, e igual darle tratamiento como le hago de arrays con esos elementos, bueno, espero os sirva

Suerte
  #4 (permalink)  
Antiguo 27/02/2007, 09:45
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años
Puntos: 7
Re: tratamiento fechas

$sql_lunes = strftime("%d/%m/%y", strtotime("-".$lunes." days"));
$sql_domingo = strftime("%d/%m/%y", strtotime("+".$domingo." days"));
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #5 (permalink)  
Antiguo 27/02/2007, 09:46
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Re: tratamiento fechas

Esto funciona perfectamente:

Código PHP:
<? 
$diass 
= array("Domingo","Lunes""Martes","Mi&eacute;rcoles","Jueves","Viernes",
"S&aacute;bado") ;
$mesesanyo = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio",
"Agosto","Septiembre","Octubre","Noviembre","Diciembre") ;
$diasemana date(w) ;
$diames date(j) ;
$mesanyo date(n) - ;
$anyo date(Y) ;
$fechadehoy "$diass[$diasemana], $diames de $mesesanyo[$mesanyo] del $anyo" ;
          
echo 
$fechadehoy;?>
Ejemplo del resultado:
Código:
Martes, 27 de Febrero del 2007
De nada.

Última edición por david_M_G; 27/02/2007 a las 11:37
  #6 (permalink)  
Antiguo 27/02/2007, 10:29
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Re: tratamiento fechas

Esta función también devuelve la fecha en español y sin necesidad de traducir:
Código PHP:
function obtenerFechaLiteral(){
    
$diames date(j) ;
    
$ano date(Y) ;

    
setlocale(LC_TIME,"es_ES");
    
$literal_dia_semana=ucwords(strftime("%A"));
    
$literal_mes =ucwords(strftime("%B"));

    return 
"$literal_dia_semana $diames de $literal_mes de $ano " ;

Eso si tu servidor está bajo linux. Pero si lo tienes bajo windows, la linea setlocale hay que ponerla así:
Código PHP:
    setlocale(LC_TIME,""); 

Última edición por holahola; 27/02/2007 a las 10:40 Razón: aclaracion linux/windows
  #7 (permalink)  
Antiguo 27/02/2007, 10:54
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: tratamiento fechas

Hola

Me gusta mucho mas la funcion de hola hola, pues permite a traves del objeto locale mostrar la fecha y se puede mejorar aun mas para obtener la fecha segun el pais que selecciones si es que trabajases en algun momento con eso, que bien hola hola, gracias.
  #8 (permalink)  
Antiguo 27/02/2007, 13:22
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 11 meses
Puntos: 3
Re: tratamiento fechas

se desvio la pregunta de viktoria estan bien las funciones que ha aportado cada uno de nosotros pero lo que ella requiere es que se indique la fecha 25/02/2005 y no que la tomes del servidor automaticamente con date();... ahora yo creo que ella lo que requiere es para una consulta o algo asi...
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #9 (permalink)  
Antiguo 27/02/2007, 15:22
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: tratamiento fechas

Hola

Bueno, pues lo que necesita victoria es que php le arroje que dia de la semana es dependiendo de la fecha (25 feb 2007) seria domingo, y creo que todos los post dan una solucion al respecto

pero si victoria necesitase algo mas, para eso estamos

suerte
  #10 (permalink)  
Antiguo 28/02/2007, 03:24
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: tratamiento fechas

Hola chicos . Gracias por tantas respuestas, pero mi pregunta era otra.
Quiero saber si hay una funcion como por ejemplo si pongo $dia_semana_actual=date("w"); me da valor de dia de la semana atual. Pues quiero saber si hay una funcion que si paso paramentro (13/5/2005) me devuleve el valor de dia de la semana que fue esta fecha.
Si no hay funcion predeterminada para tal fin no importa. Ya buscare otra solucion. Tengo calendario echo, lo que no puedo es saber en que dia de la semana caye el 1 de cada mes.

Seguire investigando..
  #11 (permalink)  
Antiguo 28/02/2007, 07:26
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 11 meses
Puntos: 3
Re: tratamiento fechas

Cita:
Iniciado por viktoria Ver Mensaje
Hola chicos.
Estoy haciendo un calendario. Yo se que hay muchos por alli ya echos, pero me gusta hacer las cosas yo sola.
Tengo una pregunta uso date() para saber fecha actual y me pregunto si hay alguna funcion predeterminada en php que me puede decir que tal fecha ( por ejemplo 25 de febrero 2005) era lunes o martes...domingo.
GRacias a todos.
Viktoria o quieres saber el dia o quieres saber la semana correspondiente a esa fecha... si es semana es:

Código PHP:
<?
$dia 
25;
$mes 02;
$anio 2005;
echo 
"Semana ".date("W"mktime(000$mes$dia$anio));
?>
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #12 (permalink)  
Antiguo 28/02/2007, 07:45
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: tratamiento fechas

Gracias el cirujano!
He probado este codigo que corresponde de 1 de febrero 2007
Código PHP:
$dia 01
$mes 02
$anio 2007
echo 
"prueba dia de la semana de 1 de febrero 2007 ".date("W"mktime(000$mes$dia$anio)); 
me devuelve valor 5 que corresponde a viernes (supongo) pero segun calendario es jueves o sea que me tenia que devolver 4
si hago
Código PHP:
 $dia_semana_actual=date("w"); 
me devuelve 3 que es mercoles y es correcto
Hay un error o algo que yo no veo.
  #13 (permalink)  
Antiguo 28/02/2007, 08:43
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Sonrisa Re: tratamiento fechas

aca pongo una funcion vastante completita q kiza les sirva a muchos.
la funcion aca:
Código PHP:
function showDate($date$format$difference 0) { // $date = time
    
global $months;
    global 
$days;
    
    if (
$difference) {
        if (
TIME_DIFFERENCE) {
            
$date strtotime(TIME_DIFFERENCE$date);
        }
    }

    
$weekday date("w"$date);
    
$day date("d"$date);
    
$day_wo_zero date("j"$date);
    
$month date("m"$date);
    
$month_wo_zero date("n"$date);
    
$year date("Y"$date);
    
$hours date("H"$date);
    
$minutes date("i"$date);
    
$seconds date("s"$date);

    
$final_date $format;

    
$final_date str_replace("WEEKDAY"$days[$weekday], $final_date);
    
$final_date str_replace("DAY0"$day_wo_zero$final_date);
    
$final_date str_replace("DAY"$day$final_date);
    
$final_date str_replace("MONTHNAME"$months[$month_wo_zero], $final_date);
    
$final_date str_replace("MONTH0"$month_wo_zero$final_date);
    
$final_date str_replace("MONTH"$month$final_date);
    
$final_date str_replace("YEAR"$year$final_date);
    
$final_date str_replace("HOUR"$hours$final_date);
    
$final_date str_replace("MINUTE"$minutes$final_date);
    
$final_date str_replace("SECOND"$seconds$final_date);
    
    return 
$final_date;


Asi llamamos la funcion:
Código PHP:
// 1ro definimos las avriables
// DAYS
$days[0] = "Domingo";
$days[1] = "Lunes";
$days[2] = "Martes";
$days[3] = "Miércoles";
$days[4] = "Jueves";
$days[5] = "Viernes";
$days[6] = "Sábado";

// MONTHS
$months[1] = "Enero";
$months[2] = "Febrero";
$months[3] = "Marzo";
$months[4] = "Abril";
$months[5] = "Mayo";
$months[6] = "Junio";
$months[7] = "Julio";
$months[8] = "Agosto";
$months[9] = "Setiembre";
$months[10] = "Octubre";
$months[11] = "Noviembre";
$months[12] = "Diciembre";
//llamamos la funcion aca abajo
showDate(date(), "WEEKDAY DAY0 de MONTHNAME de YEAR"); 
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #14 (permalink)  
Antiguo 28/02/2007, 09:18
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: tratamiento fechas

Bueno viktoria, para que comprendas mejor te envio esto
y te comento que lo que pasa es que cuando se usa la funcion date, y se usa el parametro w, que trae el numero del dia de la semana, esa funcion funciona como un arreglo, es decir, su primer elemento es 0 lo que para nosotros seria 1, y por eso es que no te cuadra el dia que te arroja el sistema con el que tu cuentas normalmente

Soluciones:


1. Crear un array asi

$dias = array("Domingo","Lunes",.......);
Donde la posicion de Domingo en el array es 0 y por ende tendrias que imprimir es el array

2. usar date l que trae el nombre del dia (en ingles) y asi por ej traeria Sunday, y entonces te tocaria si vas a usarlo asi y traducirlo, pues nada mas facil que un array asociativo, asi

$dias2 = array("Sunday"=>"Domingo",.....);
y a la hora de imprimirlo seria echo $dias2[$nombredia]; donde $nombredia captura el nombre del dia en ingles con la función date

3. si no quieres usar nada de eso, captura el numero del dia con w y ya pero tendrias que ponerle una condicion que cuando sea 0 pues $numdia se convierta en 7
Código PHP:

//El domingo es 0 y el sabado es 6
//con w numero del dia y con l nombre del dia
$dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado");
$dia 4
$mes 02
$anio 2007
$nombredia date("l"mktime(000$mes$dia$anio));
$numdia date("w"mktime(000$mes$dia$anio));
echo 
$nombredia;
echo 
'<br>';
echo 
$numdia;
echo 
'<br>';
echo 
$dias[$numdia]; 
Espero os sirva

Suerte
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 11:01.