none
Extraer el día de un control DateTimePicker RRS feed

  • Pregunta

  • Saludos;

    Tengo un formulario con dos controles de tipo DateTimePicker uno para la fecha de inicio y otro para la fecha fin, como hago para extraer el día de cada fecha y poder usar ese valor con el metodo Enumerable.Range; lo he colocado de la siguiente manera

    Enumerable.Range(DTPSince.Value.Day, DTPUntil.Value.Day)

    En tiempo de ejecución sería

    Si fecha de inicio es: 11-11-2015

    y fecha fin es: 19-11-2015

    Entonces el metodo debería trabajar con:

    Enumerable.Range(11, 19)
    Pero me retorna error convirtiendo Entero a String.

    Algna idea?

    Gracias mil por adelantado.


    Mientras mas aprendo mas quiero aprender


    • Editado A.Dumith jueves, 12 de noviembre de 2015 15:43
    jueves, 12 de noviembre de 2015 15:33

Respuestas

  • Perdona... como no dijiste en qué lenguaje trabajabas.

    Lo que SI debo decirte es que debes especificar el tipo de variables 

    dim InitialDate As DateTime = DTPSince.Value
    dim FinalDate As DateTime = DTPUntil.Value
    dim tspan As TimeSpan
    dim differenceInDays As Integer
    tspan = InitialDate - FinalDate
    differenceInDays = tspan.days
    
    Enumerable.Range(InitialDate, differenceInDays)


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta A.Dumith jueves, 12 de noviembre de 2015 16:16
    jueves, 12 de noviembre de 2015 16:14
    Moderador

Todas las respuestas

  • Segun la documentación del método Enumerable.Range (Método) éste espera dos enteros como parámetro uno que Valor del primer entero de la secuencia y el otro es el Número de enteros secuenciales que se van a generar.

    Viendo tu código poco se puede intuir. En principio debe funcionar siempre y cuando el rango sea correcto claro está.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 12 de noviembre de 2015 15:42
    Moderador
  • Saludos Sergio,

    Gracias mil por tu respuesta, ahora bien partiendo de la misma puedo intuir entonces que el primer valor que tiene que ser entero será el día de la fecha inicial y el siguiente el número de días a correr y no el día de la fecha final?

    Es decir, que si la fecha inicial es 11-11-2015 el primer valor sería el 11 y si lafecha final es 19-11-2015; en vez de colocar el 19 colocaría el número 8 que son la cantidad de días que hay del 11 al 19.

    Es así?

    Podrias ilustrarlo en el código?


    Mientras mas aprendo mas quiero aprender

    jueves, 12 de noviembre de 2015 15:49
  • No...

    Te genera una secuencia de enteros (de 19 elementos) cuyo valor iria desde

    11

    12

    13

    14

    15

    16

    ... --> así hasta el 30.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 12 de noviembre de 2015 15:54
    Moderador
  • Lo que tu quieres hacer es calcular los días que hay desde la fecha inicio hasta la fecha fin y generar la secuencia

    DateTime initialDate = DTPSince.Value;
    DateTime endDate = DTPUntil.Value;
    
    TimeSpan tspan = initialDate - endDate; // calcular la diferencia
    
    int differenceInDays = tspan.Days;
    
    var elements = Enumerable.Range(initialDate.Day, differenceInDays);


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 12 de noviembre de 2015 15:58
    Moderador
  • Exacto lo que necesito es pasarle al metodo range el rango de días partiendo de una fecha inicial.

    dim InitialDate = DTPSince.Value
    dim FinalDate = DTPUntil.Value
    dim tspan as TimeSpan
    dim differenceInDays as Int
    tspan = InitialDate - FinalDate
    differenceInDays = tspan.days
    
    Enumerable.Range(InitialDate, differenceInDays)

    Sería así en Vb.net?

    Gracias mil...


    Mientras mas aprendo mas quiero aprender

    jueves, 12 de noviembre de 2015 16:09
  • Perdona... como no dijiste en qué lenguaje trabajabas.

    Lo que SI debo decirte es que debes especificar el tipo de variables 

    dim InitialDate As DateTime = DTPSince.Value
    dim FinalDate As DateTime = DTPUntil.Value
    dim tspan As TimeSpan
    dim differenceInDays As Integer
    tspan = InitialDate - FinalDate
    differenceInDays = tspan.days
    
    Enumerable.Range(InitialDate, differenceInDays)


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta A.Dumith jueves, 12 de noviembre de 2015 16:16
    jueves, 12 de noviembre de 2015 16:14
    Moderador
  • Tienes TODA la razón Sergio, mil disculpas.

    Exacto eso era lo que necesitaba hacer, muchisias gracias.

    Saludos y que tengas el mejor de los días posibles.


    Mientras mas aprendo mas quiero aprender

    jueves, 12 de noviembre de 2015 16:16