none
Extraer fecha y horas RRS feed

  • Pregunta

  • Hola como va ?. Tengo una bd access .mdb y un campo time con fecha y hora 

    <tfoot></tfoot>
    acc_monitor_log
    time
    4/2/2020 09:16:31

    cuando el formato de fechas es 04/02/2020 09:16:31 no tengo problemas ya que extraigo con substring, porque siempre tengo el mismo tamaño ahora cambiaron el servidor y quedo el formato de fechas como mostré al principio, y un codigo que tenia ahora no funciona lo que me gustaria es ver como sin importar el formato de fecha poder extaer fecha por un lado y hora por el otro, desde ya gracias

    miércoles, 5 de febrero de 2020 15:49

Respuestas

  • hola

    Es raro buscas una fecha por igualdad exacta, aunque bueno quizas puedas hacer

     int date = Convert.ToInt32(CdateTimePicker1.Value.ToString("yyyyMMdd"))

    entonces seria

    var results = from c in dTable.AsEnumerable()
                   where Convert.ToInt32(c.Field<DateTime>("time").ToString("yyyyMMdd")) == buscar)
                   select c;

    para obtener cada parte

    drE["FECHA"] = P.Field<DateTime>("time")).ToString("dd/MM/yyyy");
    drE["HORA"] = P.Field<DateTime>("time").ToString("hh:mm:ss");

    aplica formato si tienes un datetime

    Cadenas con formato de fecha y hora personalizado

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta EnzoTuc40 miércoles, 5 de febrero de 2020 23:26
    miércoles, 5 de febrero de 2020 22:51

Todas las respuestas

  • Como lo extraes?, es que si lo bajas ya en un campo Date puedes hacer algo como esto

    DateTime date1 = new DateTime(2008, 6, 1, 7, 47, 0);
    Console.WriteLine(date1.ToString());
    
    // obtienes solo la fecha
    DateTime dateOnly = date1.Date;
    // o puedes usar un fromato como d para obtener la fecha en formato corto.
    Console.WriteLine(dateOnly.ToString("d"));
    // g en formato largo.
    Console.WriteLine(dateOnly.ToString("g"));
    // o incluso usar una mascara, esta opción a mi me gusta mucho por que puedes hacer lo que quieras con la fecha
    
    Console.WriteLine(dateOnly.ToString("MM/dd/yyyy HH:mm")); 


    Ing. Carlos Monroy

    miércoles, 5 de febrero de 2020 15:56
  • hola

    Si tienes un DateTime, no veo porque tienes que usas un substring, eso no esta bien, ni antes ni con el nuevo servidor

    lo que sucedio es que seguramente aplico una cultura diferente con un nuevo formato, pero si obtienes el DateTime puede trabjarlo directamente, no necesitas cortar cadenas de texto

    No se como consultas la db, pero si por ejemplo obtienes un datareader podrias usar

    //aqui ejecuta el ExecuteReader() del OleDbCommand

    DataTeime fechaMonitor = Convert.ToDateTime(dr["acc_monitor_log"]); textoboxFecha.Text = fechaMonitor.ToString("dd/MM/yyyy hh:mm:ss");



    puedes aplicarle formato al tener el datetime

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 5 de febrero de 2020 17:44
  • Hola leandro Gracias por tu respuesta. el campo se llama time y es datetime y tiene este tipo de datos "4/2/2020 16:16:52", lo que necesito es 1- en la consulta por fecha tengo asi:

     string buscar = Convert.ToString(dateTimePicker1.Value).ToString().Substring(0, 10);
    
    var results = from c in dTable.AsEnumerable()
                              where Convert.ToString(c.Field<DateTime>("time")).ToString().Substring(0, 10) == buscar
                              select c;

    quisiera poder extraer solo la fecha al hacer la consulta en este caso "4/2/2020 "

    y luego de ese mismo campo separo asi:

    drE["FECHA"] = Convert.ToString(P.Field<DateTime>("time")).ToString().Substring(0, 10);
    
    drE["HORA"] = Convert.ToString(P.Field<DateTime>("time")).ToString().Substring(11, 8);

    para llevarlo a un datagridview y que quede asi

     drE["FECHA"] = 4/2/2020

    drE["HORA"] = 16:16:52

    desde ya gracias

    miércoles, 5 de febrero de 2020 22:41
  • hola

    Si tienes un DateTime, no veo porque tienes que usas un substring, eso no esta bien, ni antes ni con el nuevo servidor

    lo que sucedio es que seguramente aplico una cultura diferente con un nuevo formato, pero si obtienes el DateTime puede trabjarlo directamente, no necesitas cortar cadenas de texto

    No se como consultas la db, pero si por ejemplo obtienes un datareader podrias usar

    //aqui ejecuta el ExecuteReader() del OleDbCommand

    DataTeime fechaMonitor = Convert.ToDateTime(dr["acc_monitor_log"]); textoboxFecha.Text = fechaMonitor.ToString("dd/MM/yyyy hh:mm:ss");



    puedes aplicarle formato al tener el datetime

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Hola leandro Gracias por tu respuesta. el campo se llama time y es datetime y tiene este tipo de datos "4/2/2020 16:16:52", lo que necesito es 1- en la consulta por fecha tengo asi:

     string buscar = Convert.ToString(dateTimePicker1.Value).ToString().Substring(0, 10);
    
    var results = from c in dTable.AsEnumerable()
                              where Convert.ToString(c.Field<DateTime>("time")).ToString().Substring(0, 10) == buscar
                              select c;

    quisiera poder extraer solo la fecha al hacer la consulta en este caso "4/2/2020 "

    y luego de ese mismo campo separo asi:

    drE["FECHA"] = Convert.ToString(P.Field<DateTime>("time")).ToString().Substring(0, 10);
    
    drE["HORA"] = Convert.ToString(P.Field<DateTime>("time")).ToString().Substring(11, 8);

    para llevarlo a un datagridview y que quede asi

     drE["FECHA"] = 4/2/2020

    drE["HORA"] = 16:16:52

    desde ya gracias


    miércoles, 5 de febrero de 2020 22:43
  • hola

    Es raro buscas una fecha por igualdad exacta, aunque bueno quizas puedas hacer

     int date = Convert.ToInt32(CdateTimePicker1.Value.ToString("yyyyMMdd"))

    entonces seria

    var results = from c in dTable.AsEnumerable()
                   where Convert.ToInt32(c.Field<DateTime>("time").ToString("yyyyMMdd")) == buscar)
                   select c;

    para obtener cada parte

    drE["FECHA"] = P.Field<DateTime>("time")).ToString("dd/MM/yyyy");
    drE["HORA"] = P.Field<DateTime>("time").ToString("hh:mm:ss");

    aplica formato si tienes un datetime

    Cadenas con formato de fecha y hora personalizado

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta EnzoTuc40 miércoles, 5 de febrero de 2020 23:26
    miércoles, 5 de febrero de 2020 22:51
  • hola

    Es raro buscas una fecha por igualdad exacta, aunque bueno quizas puedas hacer

     int date = Convert.ToInt32(CdateTimePicker1.Value.ToString("yyyyMMdd"))

    entonces seria

    var results = from c in dTable.AsEnumerable()
                   where Convert.ToInt32(c.Field<DateTime>("time").ToString("yyyyMMdd")) == buscar)
                   select c;

    para obtener cada parte

    drE["FECHA"] = P.Field<DateTime>("time")).ToString("dd/MM/yyyy");
    drE["HORA"] = P.Field<DateTime>("time").ToString("hh:mm:ss");

    aplica formato si tienes un datetime

    Cadenas con formato de fecha y hora personalizado

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Hola

    Te cuento esa base de datos es de un reloj biometrico y es asi

     

    de esa base de datos uso los campos time,pin y device_name, donde time es la fecha y hora de registro, pin es el numero de empleado y device_name es si es el reloj de entrada o el de salida, en mi formulario anteriormente primero consultaba la fecha según la elección de un datetimepicker, luego verificaba cada empleado por campo pin y despues extraia solo el horario de entrada y de salida y en el grid mostraba el listado de empleados con horario de entrada y salida y el total de horas trabajadas, con el formato anterior funcionaba por que el formato de fecha siempre tenia el mismo tamaño "01/01/2020" al cambiar ya no funciono, ahora con tu codigo funciona muy bien desde ya gracias. Y te consulto si ahora deberia funcionar con cualquier formato ?

    miércoles, 5 de febrero de 2020 23:25
  • hola

    >>Y te consulto si ahora deberia funcionar con cualquier formato ?

    deberia, porque al obtener el datetime en este el formato no aplica, solo cuando lo representas para mostrarlo

    en tu caso porque quisiste quitar la componente de la hora al usar el == pero si usabas un between entre al primer hora del dia y la ultima para esa fecha podrias haber usado el datetime como tipo de dato

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 6 de febrero de 2020 2:18