none
Formato fecha que permita editar RRS feed

  • Pregunta

  • Hola,

    tengo un proyecto en wpf y tengo el tipìco problema  en que me muestra en el texbox:   la fecha 16/01/1966 como

    1/16/1966 12:00:00 AM

     

    Cual es la manera mas simple de mostrar la fecha y que permita editarla si es necesario en nuestro formato?

    lo  tengo declarado en el xaml:  

    <TextBox Name="txtdatanaixement" Text="{Binding Path=data_naixement, Mode=TwoWay}"></TextBox>

    y en la base de datos sql server como datetime..

    Gracias

     

     

    martes, 17 de agosto de 2010 23:54

Respuestas

  • Hola spandau.

    este es el dilema de toda la vida, asi que te explico un poco.

    1.- en muchos casos la fecha se puede guardar como simple texto en la BBDD, de modo que te evitas estos problemas, siempre puedes realizar una conversion de cadena a fecha (tanto en Transact-SQL como en cualquier lenguaje .net), de echo en tu ejemplo muestras la fecha en un campo de texto, de modo que no habria que hacer nada.

    2.- en caso de querer usar un campo fecha (por el motivo que sea), se debe establecer la intercalacion correcta en la creacion de la BBDD, ya que de esta dependera el formato de fecha usado.

    3.- Como mucha gente pasa de esto y crea la BBDD tal cual (sin ninguna configuracion personalizada), en .net siempre es posible realizar conversion de formato especificado por la cultura, pero hay que tener cuidado al guardar en la BBDD (dependiendo del sistema usado para insertar y/o modificar datos) ya que en la BBDD solo se puede guardar en el formato especificado por la intercalacion cultural de la misma.

    Bueno podrian existir muchos puntos ya que es un tema que tiene mucha miga, asi que te pongo algunas funciones de .net que puedes usar para convertir y cuentas como te ha ido con ellas.

    conversion del propio tipo:

    IFormatProvider cultura = new CultureInfo("es-ES", true);
    DateTime fecha = DateTime.Parse(fechaDB, cultura, DateTimeStyles.NoCurrentDateDefault);
    
    

    conversion mediante el objeto 'convert' de .net:

    Convert.ToDateTime(valor, cultura);
    

    en ambas se especifica la cultura para la conversion, se puede obtener la cultura del sistema operativo, aplicacion, etc.

    ya contaras como te ha ido.


    Saludos
    David González
    MCP.
    Visita mi Blog en: http://www.dgzornoza.com/
    • Propuesto como respuesta CorsarioVasco miércoles, 18 de agosto de 2010 7:25
    • Marcado como respuesta Spandau miércoles, 18 de agosto de 2010 7:43
    miércoles, 18 de agosto de 2010 7:22

Todas las respuestas

  • Hola spandau.

    este es el dilema de toda la vida, asi que te explico un poco.

    1.- en muchos casos la fecha se puede guardar como simple texto en la BBDD, de modo que te evitas estos problemas, siempre puedes realizar una conversion de cadena a fecha (tanto en Transact-SQL como en cualquier lenguaje .net), de echo en tu ejemplo muestras la fecha en un campo de texto, de modo que no habria que hacer nada.

    2.- en caso de querer usar un campo fecha (por el motivo que sea), se debe establecer la intercalacion correcta en la creacion de la BBDD, ya que de esta dependera el formato de fecha usado.

    3.- Como mucha gente pasa de esto y crea la BBDD tal cual (sin ninguna configuracion personalizada), en .net siempre es posible realizar conversion de formato especificado por la cultura, pero hay que tener cuidado al guardar en la BBDD (dependiendo del sistema usado para insertar y/o modificar datos) ya que en la BBDD solo se puede guardar en el formato especificado por la intercalacion cultural de la misma.

    Bueno podrian existir muchos puntos ya que es un tema que tiene mucha miga, asi que te pongo algunas funciones de .net que puedes usar para convertir y cuentas como te ha ido con ellas.

    conversion del propio tipo:

    IFormatProvider cultura = new CultureInfo("es-ES", true);
    DateTime fecha = DateTime.Parse(fechaDB, cultura, DateTimeStyles.NoCurrentDateDefault);
    
    

    conversion mediante el objeto 'convert' de .net:

    Convert.ToDateTime(valor, cultura);
    

    en ambas se especifica la cultura para la conversion, se puede obtener la cultura del sistema operativo, aplicacion, etc.

    ya contaras como te ha ido.


    Saludos
    David González
    MCP.
    Visita mi Blog en: http://www.dgzornoza.com/
    • Propuesto como respuesta CorsarioVasco miércoles, 18 de agosto de 2010 7:25
    • Marcado como respuesta Spandau miércoles, 18 de agosto de 2010 7:43
    miércoles, 18 de agosto de 2010 7:22
  • Hola  David,

    gracias pòr tu respuesta,

    me parece que para no complicarme la vida lo pasaré a string con mascara y ya esta.... (recuerdo que hace tiempo hice una prueba con convert i me dio problemas, ya que aparte de mostrar los datos los quiero editar)

    Para trabajar con las fechas a traves de funciones lo convertire y ya esta...

    esta noche o mañana lo provaré, 

    Gracias

     

    miércoles, 18 de agosto de 2010 7:57
  • Hola spandau.

    este es el dilema de toda la vida, asi que te explico un poco.

    1.- en muchos casos la fecha se puede guardar como simple texto en la BBDD, de modo que te evitas estos problemas, siempre puedes realizar una conversion de cadena a fecha (tanto en Transact-SQL como en cualquier lenguaje .net), de echo en tu ejemplo muestras la fecha en un campo de texto, de modo que no habria que hacer nada.

    2.- en caso de querer usar un campo fecha (por el motivo que sea), se debe establecer la intercalacion correcta en la creacion de la BBDD, ya que de esta dependera el formato de fecha usado.

    3.- Como mucha gente pasa de esto y crea la BBDD tal cual (sin ninguna configuracion personalizada), en .net siempre es posible realizar conversion de formato especificado por la cultura, pero hay que tener cuidado al guardar en la BBDD (dependiendo del sistema usado para insertar y/o modificar datos) ya que en la BBDD solo se puede guardar en el formato especificado por la intercalacion cultural de la misma.

    Bueno podrian existir muchos puntos ya que es un tema que tiene mucha miga, asi que te pongo algunas funciones de .net que puedes usar para convertir y cuentas como te ha ido con ellas.

    conversion del propio tipo:

     

    IFormatProvider cultura = new CultureInfo("es-ES", true);
    DateTime fecha = DateTime.Parse(fechaDB, cultura, DateTimeStyles.NoCurrentDateDefault);
    
    

     

    conversion mediante el objeto 'convert' de .net:

     

    Convert.ToDateTime(valor, cultura);
    

     

    en ambas se especifica la cultura para la conversion, se puede obtener la cultura del sistema operativo, aplicacion, etc.

    ya contaras como te ha ido.


    Saludos
    David González
    MCP.
    Visita mi Blog en: http://www.dgzornoza.com/

    hola,

    despues de mucho tiempo he retomado el proyecto,

    la solucion anterior me va pe 'perlas' para visualizar en formato normal:

        IFormatProvider cultura = new CultureInfo("es-ES", true);

      DateTime fecha = DateTime.Parse(fechaDB, cultura, DateTimeStyles.NoCurrentDateDefault);
    Pero tengo un problema cuando quiero añadir registro... me sale error..
    alguna sugerencia?
    gracias.

     

    domingo, 19 de septiembre de 2010 0:26
  • Hola,

    despues de mucho tiempo retomo el hilo,

    la solucion propuesta me va bien para visualizar en formato correcto:

                    IFormatProvider cultura = new CultureInfo("es-ES", true);

               DateTime fecha = DateTime.Parse(fechaDB, cultura, DateTimeStyles.NoCurrentDateDefault);
    pero en añadir registro... me genera error...
    hay alguna manera 'facil ' de arreglarlo?
    domingo, 19 de septiembre de 2010 0:29