elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Validar fecha en C Sharp
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Validar fecha en C Sharp  (Leído 6,119 veces)
DanielPy

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Validar fecha en C Sharp
« en: 6 Julio 2013, 19:04 pm »

Hola a todos.-
Tengo una duda y es, como debo hacer para que no me muestre sábado 06 de julio
de 2013 si no Sábado 06 de Julio de 2013, hay alguna manera de que el lenguaje lo haga de forma automática o ¿debo hacerlo a mano?.-

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Globalization;
  6.  
  7. namespace fechas
  8. {
  9. public class ValidarFecha
  10. {
  11. public void FechaCorrecta()
  12. {
  13. string[] format = new string[] { "dd-MM-yyyy" };
  14. Console.Write("\n Ingrese una fecha(ej. 07-07-2013)....:");
  15. string value = Console.ReadLine();
  16. DateTime datetime;
  17. if (DateTime.TryParseExact(value, format, System.Globalization.CultureInfo.InvariantCulture,
  18. System.Globalization.DateTimeStyles.NoCurrentDateDefault, out datetime))
  19. {
  20. Console.Write(" \n Ingresó...: " + datetime.ToString("dddd") + " " + datetime.Day + " de " + datetime.ToString("MMMM")
  21. + " de " + datetime.Year);
  22. }
  23. else
  24. {
  25. Console.WriteLine("\n No es una fecha valida...");
  26. }
  27. }
  28. }
  29.  
  30. class Program
  31. {
  32. static void Main(string[] args)
  33. {
  34. fechas.ValidarFecha vf = new fechas.ValidarFecha();
  35. vf.FechaCorrecta();
  36.  
  37. Console.ReadKey();
  38. }
  39. }
  40. }

Otra cosita ¿hay una manera mejor para lograr lo mismo?

Muchos saludos.
Daniel
 


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-
DanielPy

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Validar fecha en C Sharp
« Respuesta #1 en: 7 Julio 2013, 16:47 pm »

Hola a todos.
El trozo de código a continuación soluciona mi problema solo resta que me digan si hay una manera mejor.-

Código
  1. string dia = datetime.ToString("dddd");
  2. dia = char.ToUpper(dia[0]) + dia.Substring(1);
  3. string mes = datetime.ToString("MMMM");
  4. mes = char.ToUpper(mes[0]) + mes.Substring(1);
  5. Console.Write(" \n Ingresó...: " + " " + dia + " " + datetime.Day + " de " + mes
  6. + " de " + datetime.Year);

Saludos.
Daniel


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-
DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Validar fecha en C Sharp
« Respuesta #2 en: 7 Julio 2013, 20:02 pm »

Por lo que veo, lo único que deseas hacer es poner en mayúsculas la letra inicial del día de la semana y del mes, lo que pones en la segunda respuesta no esta mal. Pero te recuerdo que el método Substring hace una copia del string y en termines de tiempo ocupa tiempo. Podrías hacer un switch() y predefinir tus strings para cada día y mes, aunque tendrías un poquito más de código. Por lo demás esta bien lo que haces para solucionar tu problema. No obstante ahora no he podido probar todo estoy en una MAC y no tengo ahora mismo como compilar el código. Bueno, espero servirte de ayuda. Un saludo Armando
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Validar fecha en C Sharp
« Respuesta #3 en: 7 Julio 2013, 21:20 pm »

¿hay una manera mejor para lograr lo mismo?

Sí, se puede mejorar mucho.

1 - Puedes evitar la declaración de todas las variables (Ya que solo le das uso una única vez, para eso es mejor "usar" diréctamente en 1 paso, en lugar de los 3 pasos que dás: "declarar variable + almacenar contenido en variable + usar variable").
2 - En lugar de una comparación me parece más correcto añadir un control de errores (Un Try/Catch por si en un futuro quieres añadir aún más tipos de excepciones, en lugar de añadir más If's).
3 - Para la organización de los elementos del string debes usar "String.Format": http://msdn.microsoft.com/en-us/library/system.string.format.aspx
4 - Para el formato de la fecha es tán simple como usar el método "ToString" con el formato adecuado ("D"): http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx .
5 - Para el formato del string resultante, puedes usar la función "ToTitleCase", y hacer un pequeñísimo ajuste añadiendo un "Replace" para modificar "De" por "de".
En fin... en general se puede simplificar bastante el code.

Aquí tienes, en VB:

Código
  1. Imports System.Globalization
  2.  
  3. Module Module1
  4.  
  5.    Sub Main(args As String())
  6.        ValidarFecha()
  7.        Console.ReadLine()
  8.    End Sub
  9.  
  10.    Private Sub ValidarFecha()
  11.  
  12.        Console.Write("Ingrese una fecha(ej. 07-07-2013)....:")
  13.  
  14.        Try
  15.  
  16.            Console.WriteLine(CultureInfo.CurrentCulture.TextInfo.ToTitleCase( _
  17.                              String.Format("Ingresó: {0}", _
  18.                              Date.Parse(Console.ReadLine).ToString("D"))).Replace("De", "de"))
  19.  
  20.        Catch ' ex As Exception
  21.            Console.WriteLine("No es una fecha valida...")
  22.        End Try
  23.  
  24.    End Sub
  25.  
  26. End Module


En C#:
(Este me ha costado un poquito, he tenido que usar convertidor online, hacer algunas correcciones manuales, y ajustar las indentaciones innecesarias)

Código
  1.    using System;
  2.    using System.Globalization;
  3.  
  4.    static class Module1 {
  5.  
  6.       public static void Main(string[] args) {
  7.           ValidarFecha();
  8.           Console.ReadLine();
  9.       }
  10.  
  11.       private static void ValidarFecha() {
  12.  
  13.           Console.WriteLine("Ingrese una fecha (ej. 07-07-2013)...:");
  14.  
  15.           try {
  16.  
  17.               Console.WriteLine(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(
  18.                                 string.Format("Ingresó: {0}",
  19.                                 DateTime.Parse(Console.ReadLine()).ToString("D"))).Replace("De", "de"));
  20.  
  21.           } catch {
  22.  
  23.               Console.WriteLine("No es una fecha valida...");
  24.  
  25.           } // Try
  26.  
  27.       } // ValidarFecha
  28.  
  29.    } // Module1


Saludos!
« Última modificación: 7 Julio 2013, 22:43 pm por EleKtro H@cker » En línea

DanielPy

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Validar fecha en C Sharp
« Respuesta #4 en: 7 Julio 2013, 22:30 pm »

Hola EleKtro H@cker
Muchas gracias funciona a la perfección, solo una reflexión: por dios,cuanto me falta.-

Saludos y muchas gracias.-
Daniel
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines