none
Rango de fecha y hora con DateTime Picker y Combobox RRS feed

  • Pregunta

  • Hola a todos

    Necesito obtener el rango de fechas y horas de mi base de datos, ya tenia resuelto este problema utilizando dos datetimePicker, para un campo datetime de mi base de datos, ahora necesito que la hora que pueda elegir el usuario tenga intervalos de 15 min, puesto que de esta manera estaran registradas en la base de datos, Por ejemplo, 16-05-2016 10:00, 10:15, 10:30 o 10:45.

    Como les explique ya tenia resuelto este problema con dos DateTimePicker:

    Dim fecha As DateTime = DtpFechaIni.Value.Date
    Dim hora As DateTime = DtpHoraIni.Value.ToString
    Dim fechaHoraIni As New DateTime(
                fecha.Year, fecha.Month, fecha.Day, hora.Hour, hora.Minute, hora.Second)

    Alguien que me pueda ayudar con esto?

    lunes, 6 de junio de 2016 14:41

Respuestas

  • adriian.91,

    Me parece perfecto, de hecho era algo que pensé proponerte pero no quise sacarte del contexto del uso de los controles DateTimePicker. Sin embargo, veo innecesario el objeto de tipo ComboBox para los segundos, no tiene sentido, ¿verdad?, luego armarías la fecha y tiempo de la siguiente manera:

    Dim fecha As DateTime = DtpFechaIni.Value.Date
    Dim fechaHoraIni As New DateTime(
    fecha.Year, fecha.Month, fecha.Day, Convert.ToInt32(CbxHora.Text), Convert.ToInt32(CbxMinuto.Text), 0)

    • Marcado como respuesta adriian.91 martes, 7 de junio de 2016 13:03
    martes, 7 de junio de 2016 4:49

Todas las respuestas

  • adriian.91,

    A ver si te entiendo, ¿requieres que el objeto de tipo DateTimePicker cuyo formato es de tipo Time sólo permita múltiplos de 15?. Dudo que haya una forma de especificar el intervalo de minutos, lo que podrías intentar es validar que el tiempo ingresado tenga valores permitidos como : 0, 15, 30 y 45 y para ello puedes hacer uso del evento Validating()

    Private Sub dtpTime_Validating(sender As Object, e As CancelEventArgs)
    	If dtpTime.Value.Minute <> 0 AndAlso dtpTime.Value.Minute <> 15 AndAlso dtpTime.Value.Minute <> 30 AndAlso dtpTime.Value.Minute <> 45 Then
    		e.Cancel = True
    		MessageBox.Show("Intervalo de minutos incorrecto")
    	End If
    End Sub

    martes, 7 de junio de 2016 3:48
  • Willams

    Gracias por responder, es una buena idea lo que me dices...  pero te quería pedir disculpas por que olvide mencionar que quería saber si es posible que en vez de utilizar el datetimepicker de formato Time, para la hora...  Utilizar tres controles combobox, uno para la hora, min y segundos dejando el CbxSegundos, de forma invisible y que el usuario solo pueda elegir entre las horas y los minutos "00, 15, 30 0 45 min". La fecha por su parte no la modificare y la dejare con su DTP respectivo. Sera esto posible? 

    algo asi...


    • Editado adriian.91 martes, 7 de junio de 2016 4:26
    martes, 7 de junio de 2016 4:18
  • adriian.91,

    Me parece perfecto, de hecho era algo que pensé proponerte pero no quise sacarte del contexto del uso de los controles DateTimePicker. Sin embargo, veo innecesario el objeto de tipo ComboBox para los segundos, no tiene sentido, ¿verdad?, luego armarías la fecha y tiempo de la siguiente manera:

    Dim fecha As DateTime = DtpFechaIni.Value.Date
    Dim fechaHoraIni As New DateTime(
    fecha.Year, fecha.Month, fecha.Day, Convert.ToInt32(CbxHora.Text), Convert.ToInt32(CbxMinuto.Text), 0)

    • Marcado como respuesta adriian.91 martes, 7 de junio de 2016 13:03
    martes, 7 de junio de 2016 4:49
  • Mil gracias Wilams era lo que buscaba. 
    martes, 7 de junio de 2016 13:03