none
¿Cómo pongo una variable de tipo DateTime a un valor mínimo? RRS feed

  • Pregunta

  • O sea quiero almacenar una fecha mínima de manera que al ser comparada con otra fecha, esta resulte siempre menor. (VB NET 2015)

    Dim fMiFecha as DateTime =         '¿Qué le asigno aquí?


    • Editado James-2016 jueves, 19 de mayo de 2016 6:17
    jueves, 19 de mayo de 2016 6:16

Respuestas

  • "Alberto Población" escribió:

    > Dim fMiFecha as DateTime =  DateTime.MinValue
    >
    > Internamente, lo que eso hace en realidad es que le pone
    > el 1 de Enero del año 0001.

    Para asignarle a la variable DateTime el valor del campo compartido DateTime.MinValue entiendo que no es necesario, ya que al tratarse de una estructura (no de una clase) ese será el valor por defecto de cualquier variable declarada con el tipo de dato System.DateTime:

        Dim fMiFecha As DateTime ' --> Su valor por defecto será 01/01/0001

    Al escribir mi respuesta he supuesto que James-2016 se está refiriendo a asignar a la variable un valor de fecha mínima, pero que no coincida con el valor mínimo de la estructura DateTime (01/01/0001), porque de ser así, simplemente basta con declarar la variable tal cual aparece más arriba, sin necesidad de asignarle valor alguno.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    jueves, 19 de mayo de 2016 7:03
    Moderador
  • "James-2016" escribió:

    > Entonces al declarar ni siquiera es preciso asignarle el valor, ...

    Pues no, porque estamos hablando de una ESTRUCTURA, y como tal, tiene un valor por defecto, que en el caso de la estructura DateTime es el 01/01/0001.

    Si habláramos de una CLASE, otro gallo cantaría, porque su valor por defecto sería Nothing, de ahí que tuvieras que crear una nueva instancia de la misma para poder hacer uso de sus propiedades y métodos, pero todas las estructuras tienen un valor por defecto, de ahí que no sea necesario crear una nueva instancia de la misma, aunque nada impide que se pueda hacer:

         Dim miFecha As DateTime  --> Valor por defecto 01/01/0001
         Dim miFecha As New DateTime()  --> Valor por defecto 01/01/0001
         Dim miFecha As New DateTime(2016, 5, 1)  --> Valor por defecto 01/05/2016

    Otras estructuras serían Integer, Long, Decimal, Char, TimeSpan, y cada una también tiene su valor por defecto que será distinto de Nothing.

    En cambio, el tipo de dato String SÍ ES UNA CLASE, de ahí que si declaramos la siguiente variable:

        Dim miCadena As String

    su valor por defecto será Nothing. Pero si al momento de declararla le asignamos un valor:

        Dim miCadena As String = "Hola, Mundo"

    obviamente su valor ya no será Nothing.

    Por eso hay que tener siempre presente si nos estamos enfrentando a una ESTRUCTURA (que son tipos de datos de valor) o a una CLASE (que son tipos de datos de referencia).

    Tipos de valor y tipos de referencia


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.




    jueves, 19 de mayo de 2016 7:32
    Moderador
  • O sea quiero almacenar una fecha mínima de manera que al ser comparada con otra fecha, esta resulte siempre menor. (VB NET 2015)

    Dim fMiFecha as DateTime =         '¿Qué le asigno aquí?


    Dim fMiFecha as DateTime =  DateTime.MinValue

    Internamente, lo que eso hace en realidad es que le pone el 1 de Enero del año 0001.

    • Marcado como respuesta James-2016 jueves, 19 de mayo de 2016 7:18
    jueves, 19 de mayo de 2016 6:46

Todas las respuestas

  • "James-2016" escribió:

    > quiero almacenar una fecha mínima de manera que al ser comparada
    > con otra fecha, esta resulte siempre menor.
    >
    > Dim fMiFecha as DateTime =         '¿Qué le asigno aquí?

    Suponiendo que como valor de esa "fecha mínima" deseas asignar el día 01 de mayo de 2016, asignarías dicho valor a la variable DateTime como indico a continuación:

       Dim fMiFecha As New DateTime(2016, 5, 1)  ' --> Año, Mes, Día

    O si lo prefieres, también puedes crear el nuevo valor DateTime de ésta otra manera:

        Dim fMiFecha As DateTime = New DateTime(2016, 5, 1)

    Échale un vistazo a los constructores de la estructura System.DateTime.


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    jueves, 19 de mayo de 2016 6:23
    Moderador
  • O sea quiero almacenar una fecha mínima de manera que al ser comparada con otra fecha, esta resulte siempre menor. (VB NET 2015)

    Dim fMiFecha as DateTime =         '¿Qué le asigno aquí?


    Dim fMiFecha as DateTime =  DateTime.MinValue

    Internamente, lo que eso hace en realidad es que le pone el 1 de Enero del año 0001.

    • Marcado como respuesta James-2016 jueves, 19 de mayo de 2016 7:18
    jueves, 19 de mayo de 2016 6:46
  • "Alberto Población" escribió:

    > Dim fMiFecha as DateTime =  DateTime.MinValue
    >
    > Internamente, lo que eso hace en realidad es que le pone
    > el 1 de Enero del año 0001.

    Para asignarle a la variable DateTime el valor del campo compartido DateTime.MinValue entiendo que no es necesario, ya que al tratarse de una estructura (no de una clase) ese será el valor por defecto de cualquier variable declarada con el tipo de dato System.DateTime:

        Dim fMiFecha As DateTime ' --> Su valor por defecto será 01/01/0001

    Al escribir mi respuesta he supuesto que James-2016 se está refiriendo a asignar a la variable un valor de fecha mínima, pero que no coincida con el valor mínimo de la estructura DateTime (01/01/0001), porque de ser así, simplemente basta con declarar la variable tal cual aparece más arriba, sin necesidad de asignarle valor alguno.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    jueves, 19 de mayo de 2016 7:03
    Moderador
  • Gracias a ambos, las dos respuestas me sirven.

    Entonces al declarar ni siquiera es preciso asignarle el valor, pero si quisiera hacerlo sobre una variable que ya está declarada DateTime.MinValue es también una buena alternativa

    jueves, 19 de mayo de 2016 7:20
  • "James-2016" escribió:

    > Entonces al declarar ni siquiera es preciso asignarle el valor, ...

    Pues no, porque estamos hablando de una ESTRUCTURA, y como tal, tiene un valor por defecto, que en el caso de la estructura DateTime es el 01/01/0001.

    Si habláramos de una CLASE, otro gallo cantaría, porque su valor por defecto sería Nothing, de ahí que tuvieras que crear una nueva instancia de la misma para poder hacer uso de sus propiedades y métodos, pero todas las estructuras tienen un valor por defecto, de ahí que no sea necesario crear una nueva instancia de la misma, aunque nada impide que se pueda hacer:

         Dim miFecha As DateTime  --> Valor por defecto 01/01/0001
         Dim miFecha As New DateTime()  --> Valor por defecto 01/01/0001
         Dim miFecha As New DateTime(2016, 5, 1)  --> Valor por defecto 01/05/2016

    Otras estructuras serían Integer, Long, Decimal, Char, TimeSpan, y cada una también tiene su valor por defecto que será distinto de Nothing.

    En cambio, el tipo de dato String SÍ ES UNA CLASE, de ahí que si declaramos la siguiente variable:

        Dim miCadena As String

    su valor por defecto será Nothing. Pero si al momento de declararla le asignamos un valor:

        Dim miCadena As String = "Hola, Mundo"

    obviamente su valor ya no será Nothing.

    Por eso hay que tener siempre presente si nos estamos enfrentando a una ESTRUCTURA (que son tipos de datos de valor) o a una CLASE (que son tipos de datos de referencia).

    Tipos de valor y tipos de referencia


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.




    jueves, 19 de mayo de 2016 7:32
    Moderador
  • mm veo que todos los tipos de dato no se inicializan de la misma forma sino que depende de si se trata de una estructura o de una clase.

    Muy ilustrativa la precisión, para tener en cuenta. Gracias por eso.

    jueves, 19 de mayo de 2016 10:49