Convertir el dia del Mes a texto

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Avatar de Usuario
nbr_1
Forista Menor
Forista Menor
Mensajes: 53
Registrado: Dom Ene 07, 2007 8:00 am
Ubicación: Cuautla, Morelos

Convertir el dia del Mes a texto

Mensaje por nbr_1 » Lun Sep 19, 2011 5:12 am

Hola que tal, necesito saber como puedo obtener el dia del mes pero en texto.
Ejemplo:
Si mi fecha es 2011/09/15,. me despliegue:
quince de septiembre del dos mil once

La verdad he buscado en san google, pero no he encontrado.
Gracias por su valiosa coperacion.
Cualquiera puede hacer un S.O., la pregunta es ¿Por donde Empiezooo?.
Avatar de Usuario
maiku
Moderador
Moderador
Mensajes: 1521
Registrado: Jue Abr 19, 2007 7:00 am
Ubicación: Cojutepeque, El Salvador C. A.
Contactar:

Re: Convertir el dia del Mes a texto

Mensaje por maiku » Lun Sep 19, 2011 7:32 am

¿qué lenguaje utilizas?
Grüße...
Maiku

Full linux alchemist!!!
Avatar de Usuario
ramonovski
Forista Medio
Forista Medio
Mensajes: 398
Registrado: Lun Sep 06, 2010 4:30 am

Re: Convertir el dia del Mes a texto

Mensaje por ramonovski » Lun Sep 19, 2011 8:02 am

Desconozco si hay librerías para convertir eso.

Lo que yo haría sería hacer usos de arrays y de muchos cases.

Para los días crear un arreglo con las palabras del 1 al 31, desde uno a veintinueve (o 31 si se quiere, pero desde el 30 ya se puede empezar a componer).

Luego uno para decenas, desde 30 hasta 90.
Otro para centenas.

Para los meses pues uno con los 12 meses.

Y para los años lo dividiría de 2 maneras, primero tomando los 4 dígitos, 2000, 1999 por ejemplo y asignándole mil, o dosmil dependiendo. Y luego tomar los últimos 3 dígitos (si != ^0) y componer con el arreglo de centenas+decenas+unidades. En caso que empieze con 0, pues hacerlo con decenas+unidades.

hmmm la verdad que es un lío, optaría por teclearlo a mano xD!

En idioma inglés creo que sería menos rollo el asunto, bendito español.

¿Es un caso de facturación?
scrotwm@FreeBSD
pekwm@Sabayon
::vim::zsh::urxvtd|blog::dotfiles::last.fm
Avatar de Usuario
maiku
Moderador
Moderador
Mensajes: 1521
Registrado: Jue Abr 19, 2007 7:00 am
Ubicación: Cojutepeque, El Salvador C. A.
Contactar:

Re: Convertir el dia del Mes a texto

Mensaje por maiku » Lun Sep 19, 2011 8:30 am

estoy de acuerdo contigo ramonovski, pero si nbr_1 está utilizando una base de datos, puede aprovechar que la mayoría poseen traducción de fechas (como poner 21/12/2011 que lo podría traducir una BD por viernes 21 de diciembre 2011) lo cual ya es un pequeño ahorro de tiempo.

nbr, revisa este link en el apartado date format es para mysql ojala no necesites para C que en ese caso habrá que hacerlo a pie o buscar alguna implementación.
Grüße...
Maiku

Full linux alchemist!!!
Avatar de Usuario
t4rr1t0
Ganador CSEL 2011
Ganador CSEL 2011
Mensajes: 357
Registrado: Dom Dic 12, 2010 6:07 pm
Contactar:

Re: Convertir el dia del Mes a texto

Mensaje por t4rr1t0 » Mar Sep 20, 2011 2:21 am

Si fuese en Perl se podria hacer con arrays o hashes (pares clave=valor) donde el numero fuese la clave y el el valor almacenado fuese la palabra.

En este link se explica el uso de hashes en Perl.

Ruby y PHP tambien soportan hashes y me imagino que pasa lo mismo con otros lenguajes.
Editado: Editado
Me parecio interesante el tema y cree un pequeño script para generar la fecha actual en palabras en PERL para mostrar ese dato en mi conky:

Código: Seleccionar todo

#!/usr/bin/perl -w
use strict;

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
my @dias=qw(uno dos tres cuatro cinco seis siete ocho nueve diez 
	    once doce trece catorce quince dieciseis diecisiete dieciocho diecinueve veinte
	    veintiuno veintidos veintitres veinticuatro veinticinco veintiseis veintisiete veintiocho 
            veintinueve treinta treinta_y_uno );

my @meses=qw(enero febrero marzo abril mayo junio julio 
	     agosto septiembre octubre noviembre diciembre);

my @diasem=qw(Domingo Lunes Martes Miercoles Jueves Viernes Sabado);

print uc("$diasem[$wday] $dias[$mday-1] de $meses[$mon] del $year \n");

Perdio algo de elegancia en pos de que las partes del codigo quedasen más diferenciadas.
Salu2.
Avatar de Usuario
nbr_1
Forista Menor
Forista Menor
Mensajes: 53
Registrado: Dom Ene 07, 2007 8:00 am
Ubicación: Cuautla, Morelos

Re: Convertir el dia del Mes a texto

Mensaje por nbr_1 » Mié Sep 28, 2011 6:33 am

Hola a Todos y gracias por sus comentarios, en realidad es lenguaje PHP, y bueno, gracia sus comentarios, realice lo siguiente para obtener el dia, el mes y el año y lo obtengo de la siguiente manera:

<?
$f_d = date("d");
if ($f_d == 01)
{ $fe_txt = primer;
}
if ($f_d == 02)
{ $fe_txt = dos;
}
if ($f_d == 03)
{ $fe_txt = tres;
}
if ($f_d == 04)
{ $fe_txt = cuatro;
}
if ($f_d == 05)
{ $fe_txt = cinco;
}
if ($f_d == 06)
{ $fe_txt = seis;
}
if ($f_d == 07)
{ $fe_txt = siete;
}
if ($f_d == 08)
{ $fe_txt = ocho;
}
if ($f_d == 09)
{ $fe_txt = nueve;
}
if ($f_d == 10)
{ $fe_txt = diez;
}
if ($f_d == 11)
{ $fe_txt = once;
}
if ($f_d == 12)
{ $fe_txt = doce;
}
if ($f_d == 13)
{ $fe_txt = trece;
}
if ($f_d == 14)
{ $fe_txt = catorce;
}
if ($f_d == 15)
{ $fe_txt = quince;
}
if ($f_d == 16)
{ $fe_txt = dieciséis;
}
if ($f_d == 17)
{ $fe_txt = diecisiete;
}
if ($f_d == 18)
{ $fe_txt = dieciocho;
}
if ($f_d == 19)
{ $fe_txt = diecinueve;
}
if ($f_d == 20)
{ $fe_txt = veinte;
}
if ($f_d == 21)
{ $fe_txt = veintiun;
}
if ($f_d == 22)
{ $fe_txt = veintidós;
}
if ($f_d == 23)
{ $fe_txt = veintitrés;
}
if ($f_d == 24)
{ $fe_txt = veinticuatro;
}
if ($f_d == 25)
{ $fe_txt = veinticinco;
}
if ($f_d == 26)
{ $fe_txt = veintiséis;
}
if ($f_d == 27)
{ $fe_txt = veintisiete;
}
if ($f_d == 28)
{ $fe_txt = veintiocho;
}
if ($f_d == 29)
{ $fe_txt = veintinueve;
}
if ($f_d == 30)
{ $fe_txt = treinta;
}
if ($f_d == 31)
{ $fe_txt = "treinta y un";
}

//echo $fe_txt;
?>

Este codigo, lo guarde en un archivo llamada ndia, y solo comparo el dia con el funcion date('y'); asignadosela a una variable y la comparo, con estos if,
para ahorar algo de codigo, lo guardo en un archivo diferente y solo lo mando llamar como libreria con el include('ndia.php') en mi codigo principal.
Gracias por todo.
Salu2.
Cualquiera puede hacer un S.O., la pregunta es ¿Por donde Empiezooo?.
Avatar de Usuario
ramonovski
Forista Medio
Forista Medio
Mensajes: 398
Registrado: Lun Sep 06, 2010 4:30 am

Re: Convertir el dia del Mes a texto

Mensaje por ramonovski » Mié Sep 28, 2011 7:16 am

Dato:

En la mayoría de los casos un switch-case siempre viene mejor que un montón de ifs anidados, por elegancia y por velocidad de ejecución. Busca por ahí comparaciones, me darán la razón.
scrotwm@FreeBSD
pekwm@Sabayon
::vim::zsh::urxvtd|blog::dotfiles::last.fm
Avatar de Usuario
mcun
Administrador
Administrador
Mensajes: 3888
Registrado: Lun Abr 19, 2010 12:30 am
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
Contactar:

Re: Convertir el dia del Mes a texto

Mensaje por mcun » Mié Sep 28, 2011 7:57 pm

mmmm lo has echo muy complejo, poco elegante y costoso en recursos

Código: Seleccionar todo

<?php
 $f = fopen ("dias.txt", "r");
    $ln= 0;
    $fecha=date("d");
    while ($line= fgets ($f)) {
        $ln++;
        if($ln==$fecha){
            echo '-->' .$ln .'<br />' .$line;
            
        }
    }
    fclose ($f);
?>

en el archivo dias.txt pones los días en nombres uno por linea

Código: Seleccionar todo

uno
dos
tres
cuarto
cinco
seis
siete
hocho
nueve
dies
once
doce
trece
catorce
quince
dis6
dies7
dies8
dies9
veinte
venti1
venti2
venti3
venti4
venti5
venti6
venti7
venti8
venti9
treinta
trenta1
...

por regla general cuando un código es repetitivo y poco elegante, de seguro hay una opción mejor

PD: espero haber interpretado correctamente lo que buscas
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809
Avatar de Usuario
ramonovski
Forista Medio
Forista Medio
Mensajes: 398
Registrado: Lun Sep 06, 2010 4:30 am

Re: Convertir el dia del Mes a texto

Mensaje por ramonovski » Mié Sep 28, 2011 9:41 pm

mcun escribió:
en el archivo dias.txt pones los días en nombres uno por linea

Código: Seleccionar todo

.
.
.
hocho
.
.
.
Ese sí no te lo perdono xD!
scrotwm@FreeBSD
pekwm@Sabayon
::vim::zsh::urxvtd|blog::dotfiles::last.fm
Avatar de Usuario
mcun
Administrador
Administrador
Mensajes: 3888
Registrado: Lun Abr 19, 2010 12:30 am
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
Contactar:

Re: Convertir el dia del Mes a texto

Mensaje por mcun » Mié Sep 28, 2011 10:20 pm

Jaaaa
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809
Avatar de Usuario
t4rr1t0
Ganador CSEL 2011
Ganador CSEL 2011
Mensajes: 357
Registrado: Dom Dic 12, 2010 6:07 pm
Contactar:

Re: Convertir el dia del Mes a texto

Mensaje por t4rr1t0 » Mié Sep 28, 2011 11:09 pm

Si entiendo bien, para lo que planteas no necesitas ni if ni estructuras similares.

Código: Seleccionar todo

$lista_nros="cero|uno|dos|tres|cuatro...";
$nombre_nros=explode("|",$lista_nros);


$f_d = date("d"); 
echo $nombre_nros[$f_d];


Salu2
Off topic:
mcun lo del hocho tambien es por la edad, no? ::lol:: ::lol::
Avatar de Usuario
mcun
Administrador
Administrador
Mensajes: 3888
Registrado: Lun Abr 19, 2010 12:30 am
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
Contactar:

Re: Convertir el dia del Mes a texto

Mensaje por mcun » Mié Sep 28, 2011 11:36 pm

pues así e mas elegante aún

Off topic:
Off topic:
mcun lo del hocho tambien es por la edad, no?
Off topic:


Jaaaa eso me pasa por no googlear cuando tengo dudas XD a mi edad no se puede estar en todo
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809
Avatar de Usuario
Juanp_1982
Forista Mayor
Forista Mayor
Mensajes: 913
Registrado: Dom Ago 13, 2006 7:00 am
Ubicación: Toronto, Canada

Re: Convertir el dia del Mes a texto

Mensaje por Juanp_1982 » Jue Sep 29, 2011 12:47 am

hay funciones en PHP que hacen el trabajo por ti, y son MUY flexibles

empieza por configurar el idioma y el lugar con setlocate()
y luego con date() [y el formato que tu queiras] esto te va a dar un aproximado en palabras y en espaniol de lo que estas buscando

y todo el trabajo que necesitas lo haces en 2 lineas de codigo :-)


para mayor informacion googlea las funciones que te acabo de dar para que lo adaptes a tu pais, idioma y formato que estas buscando

:-)
La Hora Mas oscura es una antes de que Amanesca (Anonimo)
Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Convertir el dia del Mes a texto

Mensaje por akodo » Vie Sep 30, 2011 11:40 am

Analizando un poco por encima los costes de ejecución...
nbr_1 : 2 asignaciones + n comparaciones por ejecución
mcun : creo que el coste es similar, pero añadiendo el coste adicional de abrir el fichero (eso sí, es más elegante :) )
ramonovski : depende de como se ejecute internamente (si sabe o no dónde "saltar"), aunque supongo que será 1 comparación + 2 asignación en el mejor caso, o 2 asignaciones + n comparaciones en el peor.
t4rr1t0 : 2 asignaciones + lo que tarde el explode.

Mi opción : similar a la que dice t4rr1t0, pero utilizando un array directamente

Código: Seleccionar todo

function toDateString($day){
  static $days = array("cero", "uno", "dos", ...... );
  return $days[$day];
}
$day = date("d");
echo toDateString($day);
El coste es en teoría : 1 asignación por script (no por ejecución de la función) para inicializar el array + 1 asignación para obtener el día.

La otra opción es la de Juanp_1982
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])
Avatar de Usuario
mcun
Administrador
Administrador
Mensajes: 3888
Registrado: Lun Abr 19, 2010 12:30 am
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
Contactar:

Re: Convertir el dia del Mes a texto

Mensaje por mcun » Vie Sep 30, 2011 3:37 pm

Si tienes razón mi código parece ser muy similar al de nbr_1 en cuanto a costo de ejecución,

Edito
Para no andar especulando hice un Benchmarking con la clase stoper para php y los resultados son los siguientes

Código: Seleccionar todo

Empiezo... mcun 
30-->treinta 
el tiempo de script mcun 0.0002 sec

Empiezo... t4rr1t0 
treinta
el tiempo de script t4rr1t0 0.0001 sec

Empiezo... akodo 
treinta
el tiempo de script akodo 0 sec

Empiezo... nbr_1 
treinta
el tiempo de script nbr_1 0.0001 sec

Al final el mio resulto serel mas costoso :oops: el de akodo el mas rápido y los demás iguales...

al que le interese un ejemplo de uso de la clase stoper
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje