none
Como poner fecha en el formato Dia/Mes/Año

    Question

  • Hola Compañeros...

    Amigos tengo un problema que no me deja avanzar en mi aplicacion espero me puedan ayudar .

    Lo que pasa es que tengo un campo(TextBox) de fecha en un formulario que se debe llenar y esta en el formato Mes/Dia/Año pero cuando guardo en la base de datos me envia en el formato Dia/Mes/Año

    ¿como puedo cambiar el formato de la fecha en visual studio C# para que el usuario ingrese su fecha de nacimiento en el formato Dia/Mes/Año y no en el formato Mes/Dia/Año?

    Gracias....


    Victor Sevilla Ordoñez Colombia
    Thursday, December 16, 2010 12:07 AM

Answers

  • hola

    en tu caso podria ser algo como esto

     

    [WebMethod]
    public void Nuevo_Cliente(int ced,int tipo_doc,int cod_depto,int cod_muni,int cod_est_civil,int cod_sexo,string nom,string apel,string dir,string tel, string fec_nac, string ocupa,string nom_cony,string apel_cony,string ced_cony,string cap_pag )
    {

      string Sql = @"insert into CLIENTE (CEDULA_CLIENTE,COD_TIP_DOC,COD_DEPTO,COD_MUNICIPIO,
                        COD_ESTADO_CIVIL,COD_SEXO,NOMBRES,APELLIDOS,DIRECCION,
                        TELEFONO,FECHA_NACIMIENTO,OCUPACION,NOMBRES_CONYUGUE,
                        APELLIDOS_CONYUGUE,IDENTIFICACION_CONYUGUE,CAPACIDAD_DE_PAGO )
                    values (@ced, @tipodoc, @coddepto, @codmuni, @codestcivil,
                            @codsexo, @nom, @apel, @ dir, @tel, @fec_nac, @ocupa,
                            @nomcony, @apelcony, @cedcony, @cappag )";

        using(SqlConnection cn = new SqlConnection("connection string"))
        {
            cn.Open();

            SqlCommand cmd = new SqlCommand(Sql, cn);
            cmd.Parameters.AddWithValue("@ced", ced);
            cmd.Parameters.AddWithValue("@tipodoc", tipo_doc);
            cmd.Parameters.AddWithValue("@coddepto", cod_depto);
            cmd.Parameters.AddWithValue("@codmuni", cod_muni);
            cmd.Parameters.AddWithValue("@codestcivil", cod_est_civil);
            cmd.Parameters.AddWithValue("@codsexo", cod_sexo);
           
            cmd.Parameters.AddWithValue("@nom", nom);
            cmd.Parameters.AddWithValue("@apel", apel);       
            cmd.Parameters.AddWithValue("@dir", dir);
            cmd.Parameters.AddWithValue("@tel", tel);
            cmd.Parameters.AddWithValue("@fec_nac", Convert.ToDateTime(fec_nac));
            cmd.Parameters.AddWithValue("@ocupa", ocupa);
            cmd.Parameters.AddWithValue("@nomcony", nom_cony);
            cmd.Parameters.AddWithValue("@apelcony", apel_cony);
            cmd.Parameters.AddWithValue("@cedcony", ced_cony);
            cmd.Parameters.AddWithValue("@cappag", cap_pag);
           
            cmd.ExecuteNonQuery();
        }
       
    }

    alguno punto importantes

    - en los parametros deberias pasarle el mismo tipo de datos que usarias en la tabla de la db, por eso en la linea

    cmd.Parameters.AddWithValue("@fec_nac", Convert.ToDateTime(fec_nac));

    veras que convierto el string a DataTiem, sino es una fecha valida no podras insertar

    - veras que el usign ademas define el ambito de la conexion por lo tanto no necesitas cerrarla

    - el @ en el string lo ahce multilinea, por lo tanto no necesitas concatener con el + cada cadena que uses

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, December 16, 2010 12:14 PM

All replies

  • Hola,

     

    Puedes utilizar el MaskedEdit de Ajax y crearle una mascarga al textbox. Por ejemplo

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

    <cc1:MaskedEditExtender ID="MaskedEditExtender1" runat="server" Mask="99/99/9999" MaskType="Date" TargetControlID="TextBox1" PromptCharacter="_"> </cc1:MaskedEditExtender>

    <cc1:MaskedEditValidator ID="MaskedEditValidator1" runat="server" ControlExtender="MaskedEditExtender1" ControlToValidate="TextBox1" EmptyValueMessage="Date is required" InvalidValueMessage="Date is invalid" IsValidEmpty="False" TooltipMessage="Input a Date"></cc1:MaskedEditValidator>

    Saludos,



    Jason Ulloa
    Mi Blog
    Thursday, December 16, 2010 1:19 AM
  • Hola,

     

    Puedes utilizar el MaskedEdit de Ajax y crearle una mascarga al textbox. Por ejemplo

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

    <cc1:MaskedEditExtender ID="MaskedEditExtender1" runat="server" Mask="99/99/9999" MaskType="Date" TargetControlID="TextBox1" PromptCharacter="_"> </cc1:MaskedEditExtender>

    <cc1:MaskedEditValidator ID="MaskedEditValidator1" runat="server" ControlExtender="MaskedEditExtender1" ControlToValidate="TextBox1" EmptyValueMessage="Date is required" InvalidValueMessage="Date is invalid" IsValidEmpty="False" TooltipMessage="Input a Date"></cc1:MaskedEditValidator>

    Saludos,



    Jason Ulloa
    Mi Blog


    Gracias Jasson por tu respuesta

    mira hice lo que dices pero no lo he podido solucionar estoy averiguando sobre la configuracion del webconfig para el formato y cultura del sitio

    gracias


    Victor Sevilla Ordoñez Colombia
    Thursday, December 16, 2010 1:48 AM
  • Hola, revisa la configuracion de cultura y globalizacion del scriptmanager

     


    Julio Avellaneda
    Blog !!

    Thursday, December 16, 2010 1:54 AM
  • hola

    no es un tema del web.config ,si bien en este pdorias definir la cultura usando la linea

     <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="es-AR" uiCulture="es-AR"/>

    C ó mo: Establecer referencia cultural actual mediante programaci ó n en una aplicaci ó n de ASP.NET

    de esta forma defines la cultura del sitio

     

    pero asm alla de eso creo que el problema se presenta en la forma en como estas grabando la informacion en la base de datos, lo que me surge la pregunta: estas usando parametros ? o concatenas el string con el valor de la fecha ?

     

    o sea usas algo como esto

    using(SqlConnection conn = new SqlConnection ("connection string"))
    {
        conn.Open(); 
       
        string query = "INSERT INTO Datos(FechaNac) VALUES (@FechaNac)"
        SqlCommand cmd = new SqlCommand(query, conn);
        cmd.Parameters.AddWithValue("@FechaNac", Convert.ToDateTime(Textbox.Text));

        cmd.ExecuteNonQuery();
    }

     

    es muy importante la linea que usa el Parameters.AddWithValue() ya que ese seria el parametro, al cual el envias directo un tipo de dato DateTime, no un string o un int, un dato datetime y esto ahce que todo el tema de formato se solucione

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, December 16, 2010 2:14 AM
  • Hola, revisa la configuracion de cultura y globalizacion del scriptmanager

     


    Julio Avellaneda
    Blog !!


    Hola Julio gracias por responder

    me podrias indicar como reviso esta configuracion que dices


    Victor Sevilla Ordoñez Colombia
    Thursday, December 16, 2010 2:20 AM
  • hola, en tu scriptmanager establece la propiedad EnableScriptGlobalization="true" y EnableScriptLocalization="true" y en las directivas de la pagina Culture="auto" y UICulture="auto"

    Julio Avellaneda
    Blog !!

    Thursday, December 16, 2010 2:29 AM
  • hola

    no es un tema del web.config ,si bien en este pdorias definir la cultura usando la linea

     <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="es-AR" uiCulture="es-AR"/>

     

    C ó mo: Establecer referencia cultural actual mediante programaci ó n en una aplicaci ó n de ASP.NET

     

    de esta forma defines la cultura del sitio

     

    pero asm alla de eso creo que el problema se presenta en la forma en como estas grabando la informacion en la base de datos, lo que me surge la pregunta: estas usando parametros ? o concatenas el string con el valor de la fecha ?

     

    o sea usas algo como esto

    using(SqlConnection conn = new SqlConnection ("connection string"))
    {
        conn.Open(); 
       
        string query = "INSERT INTO Datos(FechaNac) VALUES (@FechaNac)"
        SqlCommand cmd = new SqlCommand(query, conn);
        cmd.Parameters.AddWithValue("@FechaNac", Convert.ToDateTime(Textbox.Text));

        cmd.ExecuteNonQuery();
    }

     

    es muy importante la linea que usa el Parameters.AddWithValue() ya que ese seria el parametro, al cual el envias directo un tipo de dato DateTime, no un string o un int, un dato datetime y esto ahce que todo el tema de formato se solucione

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    Hola leandro

    mira, la informacion a la base de datos la envio concatenandola  aqui va el codigo

     protected void Btn_Enviar_Click(object sender, EventArgs e)
      {
        Rw_Crediponte.WS_Crediponte Rw = new Rw_Crediponte.WS_Crediponte();
        Rw.Nuevo_Cliente(Convert.ToInt32( Txt_Ced.Text),Convert.ToInt32( DrDl_Tip_Doc.SelectedValue),Convert.ToInt32( DrDL_DEPTO.SelectedValue),Convert.ToInt32( DrDL_MPIO.SelectedValue),Convert.ToInt32( DrDL_ESTADOCIVIL.SelectedValue),Convert.ToInt32( DrDL_Sexo.SelectedValue),Txt_Nom.Text,Txt_Apel.Text,Txt_Dir.Text,Txt_Tel_Cli.Text,Txt_Fec_Nac.Text,Txt_Ocupa.Text,Txt_Nom_Cony.Text,Txt_Apel_Cony.Text,Txt_Ced_Cony.Text,Txt_Cap_Pago.Text);
    

    y este es el codigo del servicio

     // REFERENCIA WEB PARA INSERTAR UN CLIENTE
        [WebMethod]
        public void Nuevo_Cliente(int ced,int tipo_doc,int cod_depto,int cod_muni,int cod_est_civil,int cod_sexo,string nom,string apel,string dir,string tel,string fec_nac, string ocupa,string nom_cony,string apel_cony,string ced_cony,string cap_pag )
        {
          string Sql;
          Sql = " insert into CLIENTE (CEDULA_CLIENTE,COD_TIP_DOC,COD_DEPTO,COD_MUNICIPIO,COD_ESTADO_CIVIL,COD_SEXO,NOMBRES,APELLIDOS,DIRECCION,TELEFONO,FECHA_NACIMIENTO,OCUPACION,NOMBRES_CONYUGUE,APELLIDOS_CONYUGUE,IDENTIFICACION_CONYUGUE,CAPACIDAD_DE_PAGO )";
          Sql += " values (" + ced + "," + tipo_doc + "," + cod_depto + "," + cod_muni + "," + cod_est_civil + "," + cod_sexo + ",'" + nom + "','" + apel + "','" + dir + "','" + tel + "','" + fec_nac + "','" + ocupa + "','" + nom_cony + "','" + apel_cony + "','" + ced_cony + "','" + cap_pag + "' )";
    

    el usuario ingresa la fecha en un textbox en el formato Mes/Dia/Año y no hay problema se guardan bien los datos en la bd, pero el usuario requiere que en el formulario se ingrese la fecha en el formato Dia/Mes/Año. el tipo de dato de la fecha en la base de datos es DateTime

    Muchas gracias por tu ayuda..


    Victor Sevilla Ordoñez Colombia
    Thursday, December 16, 2010 3:12 AM
  • ahi esta le problema, si concatenas en un string los parametros que la query es ams que seguro tendras inconvenientes con formatos y tipos de datos

    no es bueno armar las consultas cancatnando, por eso se inventaron los parametros, aplica la tecnica que mostre en el ejemplo de usar el arameters.AddWithValue() veras que resuleve el problema, y una buena parte del mismo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, December 16, 2010 3:18 AM
  • ahi esta le problema, si concatenas en un string los parametros que la query es ams que seguro tendras inconvenientes con formatos y tipos de datos

    no es bueno armar las consultas cancatnando, por eso se inventaron los parametros, aplica la tecnica que mostre en el ejemplo de usar el arameters.AddWithValue() veras que resuleve el problema, y una buena parte del mismo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Gracias Leandro

    mira lo que pasa es que no se muy bien como se aplicaria mi ejemplo a la forma como dices, osea no se como mandar la fecha que se captura desde el textbox (Txt_Fec_Nac) a la base de datos de la forma como lo expones  en el ejemplo por que como te digo en el formato Mes/Dia/Año no tenia ningun problema pero el usuario quiere que se ingrese en el formato Dia/Mes/Año

    Gracias..


    Victor Sevilla Ordoñez Colombia
    Thursday, December 16, 2010 3:50 AM
  • hola

    en tu caso podria ser algo como esto

     

    [WebMethod]
    public void Nuevo_Cliente(int ced,int tipo_doc,int cod_depto,int cod_muni,int cod_est_civil,int cod_sexo,string nom,string apel,string dir,string tel, string fec_nac, string ocupa,string nom_cony,string apel_cony,string ced_cony,string cap_pag )
    {

      string Sql = @"insert into CLIENTE (CEDULA_CLIENTE,COD_TIP_DOC,COD_DEPTO,COD_MUNICIPIO,
                        COD_ESTADO_CIVIL,COD_SEXO,NOMBRES,APELLIDOS,DIRECCION,
                        TELEFONO,FECHA_NACIMIENTO,OCUPACION,NOMBRES_CONYUGUE,
                        APELLIDOS_CONYUGUE,IDENTIFICACION_CONYUGUE,CAPACIDAD_DE_PAGO )
                    values (@ced, @tipodoc, @coddepto, @codmuni, @codestcivil,
                            @codsexo, @nom, @apel, @ dir, @tel, @fec_nac, @ocupa,
                            @nomcony, @apelcony, @cedcony, @cappag )";

        using(SqlConnection cn = new SqlConnection("connection string"))
        {
            cn.Open();

            SqlCommand cmd = new SqlCommand(Sql, cn);
            cmd.Parameters.AddWithValue("@ced", ced);
            cmd.Parameters.AddWithValue("@tipodoc", tipo_doc);
            cmd.Parameters.AddWithValue("@coddepto", cod_depto);
            cmd.Parameters.AddWithValue("@codmuni", cod_muni);
            cmd.Parameters.AddWithValue("@codestcivil", cod_est_civil);
            cmd.Parameters.AddWithValue("@codsexo", cod_sexo);
           
            cmd.Parameters.AddWithValue("@nom", nom);
            cmd.Parameters.AddWithValue("@apel", apel);       
            cmd.Parameters.AddWithValue("@dir", dir);
            cmd.Parameters.AddWithValue("@tel", tel);
            cmd.Parameters.AddWithValue("@fec_nac", Convert.ToDateTime(fec_nac));
            cmd.Parameters.AddWithValue("@ocupa", ocupa);
            cmd.Parameters.AddWithValue("@nomcony", nom_cony);
            cmd.Parameters.AddWithValue("@apelcony", apel_cony);
            cmd.Parameters.AddWithValue("@cedcony", ced_cony);
            cmd.Parameters.AddWithValue("@cappag", cap_pag);
           
            cmd.ExecuteNonQuery();
        }
       
    }

    alguno punto importantes

    - en los parametros deberias pasarle el mismo tipo de datos que usarias en la tabla de la db, por eso en la linea

    cmd.Parameters.AddWithValue("@fec_nac", Convert.ToDateTime(fec_nac));

    veras que convierto el string a DataTiem, sino es una fecha valida no podras insertar

    - veras que el usign ademas define el ambito de la conexion por lo tanto no necesitas cerrarla

    - el @ en el string lo ahce multilinea, por lo tanto no necesitas concatener con el + cada cadena que uses

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, December 16, 2010 12:14 PM