Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 18 mensajes ]  Ir a página 1, 2  Siguiente
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Dom Ene 07, 2007 8:00 am
Mensajes: 53
Ubicación: Cuautla, Morelos

Nota Publicado: Lun Sep 19, 2011 5:12 am 
Arriba  
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?.

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Jue Abr 19, 2007 7:00 am
Mensajes: 1518
Ubicación: Cojutepeque, El Salvador C. A.

Nota Publicado: Lun Sep 19, 2011 7:32 am 
Arriba  
¿qué lenguaje utilizas?

_________________
Grüße...
Maiku

Full linux alchemist!!!

 Perfil WWW  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Lun Sep 06, 2010 4:30 am
Mensajes: 398

Nota Publicado: Lun Sep 19, 2011 8:02 am 
Arriba  
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

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Jue Abr 19, 2007 7:00 am
Mensajes: 1518
Ubicación: Cojutepeque, El Salvador C. A.

Nota Publicado: Lun Sep 19, 2011 8:30 am 
Arriba  
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!!!

 Perfil WWW  

Desconectado
Ganador CSEL 2011
Ganador CSEL 2011
Avatar de Usuario

Registrado: Dom Dic 12, 2010 6:07 pm
Mensajes: 357

Nota Publicado: Mar Sep 20, 2011 2:21 am 
Arriba  
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:
#!/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.

 Perfil WWW  

Desconectado
Forista Menor
Forista Menor
Avatar de Usuario

Registrado: Dom Ene 07, 2007 8:00 am
Mensajes: 53
Ubicación: Cuautla, Morelos

Nota Publicado: Mié Sep 28, 2011 6:33 am 
Arriba  
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?.

 Perfil  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Lun Sep 06, 2010 4:30 am
Mensajes: 398

Nota Publicado: Mié Sep 28, 2011 7:16 am 
Arriba  
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

 Perfil  

Desconectado
Administrador
Administrador
Avatar de Usuario

Registrado: Lun Abr 19, 2010 12:30 am
Mensajes: 3888
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Mié Sep 28, 2011 7:57 pm 
Arriba  
mmmm lo has echo muy complejo, poco elegante y costoso en recursos

Código:
<?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:
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

 Perfil WWW  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Lun Sep 06, 2010 4:30 am
Mensajes: 398

Nota Publicado: Mié Sep 28, 2011 9:41 pm 
Arriba  
mcun escribió:

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

Código:
.
.
.
hocho
.
.
.



Ese sí no te lo perdono xD!

_________________
scrotwm@FreeBSD
pekwm@Sabayon
::vim::zsh::urxvtd|blog::dotfiles::last.fm

 Perfil  

Desconectado
Administrador
Administrador
Avatar de Usuario

Registrado: Lun Abr 19, 2010 12:30 am
Mensajes: 3888
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Mié Sep 28, 2011 10:20 pm 
Arriba  
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

 Perfil WWW  

Desconectado
Ganador CSEL 2011
Ganador CSEL 2011
Avatar de Usuario

Registrado: Dom Dic 12, 2010 6:07 pm
Mensajes: 357

Nota Publicado: Mié Sep 28, 2011 11:09 pm 
Arriba  
Si entiendo bien, para lo que planteas no necesitas ni if ni estructuras similares.


Código:
$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::

 Perfil WWW  

Desconectado
Administrador
Administrador
Avatar de Usuario

Registrado: Lun Abr 19, 2010 12:30 am
Mensajes: 3888
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Mié Sep 28, 2011 11:36 pm 
Arriba  
pues así e mas elegante aún

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


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

 Perfil WWW  

Desconectado
Forista Mayor
Forista Mayor
Avatar de Usuario

Registrado: Dom Ago 13, 2006 7:00 am
Mensajes: 913
Ubicación: Toronto, Canada

Nota Publicado: Jue Sep 29, 2011 12:47 am 
Arriba  
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)

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 8:00 am
Mensajes: 1457
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Vie Sep 30, 2011 11:40 am 
Arriba  
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:
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" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Administrador
Administrador
Avatar de Usuario

Registrado: Lun Abr 19, 2010 12:30 am
Mensajes: 3888
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Vie Sep 30, 2011 3:37 pm 
Arriba  
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:
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

 Perfil WWW  
Mostrar mensajes previos:  Ordenar por  
 [ 18 mensajes ]  Ir a página 1, 2  Siguiente
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
Cómo convertir imagen a texto? (solucionado)

en Software

Firu

4

2676

Lun Nov 15, 2010 2:30 am

doc Ver último mensaje

Convertir texto en una tupla o lista (Python)

en Programación

Sergiolocuelo

0

219

Mié Ago 15, 2018 6:41 pm

Sergiolocuelo Ver último mensaje

Convertir .bat a sh ayuda

en Programación

blesther

1

1959

Mié Ene 06, 2010 3:47 pm

ceduardo Ver último mensaje

Convertir archivos MIDI a MP3.

en El Café

Aduburyus

0

960

Lun May 24, 2010 4:40 pm

Aduburyus Ver último mensaje

[MAC] Convertir Videos a formato FLV ?

en El Café

Diabliyo

1

405

Vie Dic 17, 2010 6:03 pm

Deckon Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO