Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Comparar fechas y horas con operadores relacionales

Los operadores relacionales comparan arreglos en términos cuantitativos, con operadores como "menor que", "mayor que" e "igual a". El resultado de una comparación relacional es un arreglo lógico que indica las ubicaciones en las que la relación es verdadera.

Los tipos de datos datetime y duration representan fechas y horas de forma cuantitativa. Para comparar estos arreglos, puede utilizar los mismos operadores relaciones que usa para comparar arreglos numéricos. No obstante, las comparaciones tienen significados ligeramente diferentes en función del tipo de datos.

Operador relacional

Significado cuando se comparan valores datetime

Significado cuando se comparan valores duration

<

Antes que

Una duración menor que

<=

Antes o en la misma fecha y a la misma hora que

Una duración menor que o igual que

>

Después que

Una duración mayor que

>=

Después o en la misma fecha y a la misma hora que

Una duración mayor que o igual que

==

En la misma fecha y a la misma hora que

La misma duración que

~=

No en la misma fecha ni a la misma hora que

No la misma duración que

Nota: El tipo de datos calendarDuration no admite comparaciones con operadores relacionales. Los años naturales, los trimestres, los meses, las semanas y los días no representan necesariamente periodos de tiempo fijos, debido a los años bisiestos, los meses con diferente número de días, el horario de verano y los segundos intercalares.

Comparar fechas y horas

Puede comparar dos arreglos de datetime entre sí y dos arreglos de duration entre sí. Los arreglos deben tener tamaños compatibles porque los operadores relacionales realizan comparaciones elemento por elemento. En los casos más sencillos, los dos arreglos tienen el mismo tamaño o uno es un escalar. En casos más complejos, MATLAB® amplía de manera implícita arreglos con tamaños compatibles para que sean del mismo tamaño durante la comparación. Para obtener más información, consulte Tamaños de arreglos compatibles para operaciones básicas.

También puede comparar arreglos de datetime y de duration con:

  • Texto. Cuando compara texto con un arreglo de datetime o de duration, MATLAB convierte de forma implícita el texto al valor datetime o duration que representa.

  • Números. Cuando compara un número con un arreglo de duration, MATLAB convierte de forma implícita ese número a un valor duration que es el número de días equivalente.

No puede comprar un arreglo de datetime y un arreglo de duration. No obstante, puede comparar componentes de arreglos de datetime con números o con arreglos de duration.

Comparar arreglos de datetime

Cree un arreglo de datetime. Para convertir texto que representa una fecha y una hora, utilice la función datetime.

D1 = datetime("2022-06-05 11:37:05")
D1 = datetime
   05-Jun-2022 11:37:05

También puede convertir números a arreglos de datetime. Los arreglos numéricos de entrada representan componentes datetime: años, meses, días, horas, minutos y segundos.

D2 = datetime(2022,2:4:10,15,12,0,0)
D2 = 1x3 datetime
   15-Feb-2022 12:00:00   15-Jun-2022 12:00:00   15-Oct-2022 12:00:00

Compare los dos arreglos de datetime. El resultado muestra qué elementos de D2 tienen lugar después de D1.

TF = D1 < D2
TF = 1x3 logical array

   0   1   1

Para crear un arreglo de datetime nuevo que contenga solo los elementos coincidentes, indexe en D2 con TF.

afterD1 = D2(TF)
afterD1 = 1x2 datetime
   15-Jun-2022 12:00:00   15-Oct-2022 12:00:00

Texto y arreglos de datetime

Si tiene texto que representa fechas y horas, y tiene un formato que la función datetime reconoce, puede comparar el texto con un arreglo de datetime. La comparación convierte el texto de forma implícita.

Por ejemplo, compare una cadena que represente el 1 de junio de 2022 con D2. El primer elemento de D2 tiene lugar antes del 1 de junio (si especifica solo una fecha, la hora se establecerá en medianoche).

TF = D2 >= "2022-06-01"
TF = 1x3 logical array

   0   1   1

afterJune1 = D2(TF)
afterJune1 = 1x2 datetime
   15-Jun-2022 12:00:00   15-Oct-2022 12:00:00

Componentes de arreglos de datetime

El tipo de datos datetime proporciona acceso a los componentes de los valores datetime. Acceda a los componentes con las funciones year, quarter, month, day, hour, minute y second. Puede comparar componentes con números o valores duration porque estas funciones devuelven números.

Por ejemplo, muestre el arreglo de datetime D2. Después, muestre su componente de mes.

D2
D2 = 1x3 datetime
   15-Feb-2022 12:00:00   15-Jun-2022 12:00:00   15-Oct-2022 12:00:00

M = month(D2)
M = 1×3

     2     6    10

Para encontrar los elementos de D2 que tienen lugar antes del mes de junio, compare D2 con el valor numérico correspondiente a junio. Después, indexe en D2.

TF = month(D2) < 6
TF = 1x3 logical array

   1   0   0

beforeJune = D2(TF)
beforeJune = datetime
   15-Feb-2022 12:00:00

Comparar arreglos de duration

Cree un arreglo de duration. Una forma de crearlo es utilizar la función duration para convertir texto que represente una duración.

Por ejemplo, convertir texto a formato hh:mm:ss.

T1 = duration("03:37:12")
T1 = duration
   03:37:12

También puede convertir números a arreglos de duration. Los arreglos numéricos de entrada representan horas, minutos y segundos.

T2 = duration(0:2:6,30,0)
T2 = 1x4 duration
   00:30:00   02:30:00   04:30:00   06:30:00

Compare los dos arreglos de duration. El resultado muestra qué elementos de T2 son más largos que T1.

TF = T1 < T2
TF = 1x4 logical array

   0   0   1   1

Para crear un arreglo de duration nuevo que contenga solo los elementos coincidentes, indexe en T2 con TF.

longerThanT1 = T2(TF)
longerThanT1 = 1x2 duration
   04:30:00   06:30:00

Texto y arreglos de duration

Si tiene texto que representa una duración, y tiene un formato que la función duration reconoce, puede comparar el texto con un arreglo de duration. La comparación convierte el texto de forma implícita.

Por ejemplo, compare una cadena que represente dos horas y cinco minutos con T2. El primer elemento de T2 es más corto.

T2 >= "02:05:00"
ans = 1x4 logical array

   0   1   1   1

longerThan205 = T2(TF)
longerThan205 = 1x2 duration
   04:30:00   06:30:00

Números y arreglos de duration

Puede comprar arreglos numéricos con arreglos de duration. La comparación trata un valor numérico como un número de días con una longitud fija (24 horas).

Compare los elementos de T2 con un día. Todos los elementos son más cortos.

TF = T2 < 1
TF = 1x4 logical array

   1   1   1   1

T2(TF)
ans = 1x4 duration
   00:30:00   02:30:00   04:30:00   06:30:00

Compare los elementos de T2 con una hora. Solo el primer elemento de T2 es más corto.

TF = T2 < 1/24
TF = 1x4 logical array

   1   0   0   0

T2(TF)
ans = duration
   00:30:00

Comparaciones en diferentes zonas horarias

Cree valores datetime para el 1 de octubre de 2022, a las 4:00 p. m. en Los Ángeles y el 1 de octubre de 2022 a las 5:00 p. m. en Nueva York. Las dos ciudades están tan alejadas que se encuentran en diferentes zonas horarias.

Puede crear arreglos de datetime con zonas horarias especificando el argumento nombre-valor TimeZone. Para mostrar la zona horaria cuando muestre estos valores, especifique el argumento nombre-valor Format. Tenga en cuenta que puede especificar un formato de visualización datetime diferente al formato del texto de entrada.

LAtime = datetime("2022-10-01 16:00:00", ...
                  "TimeZone","America/Los_Angeles",...
                  "Format","dd-MMM-yyyy hh:mm:ss a z")
LAtime = datetime
   01-Oct-2022 04:00:00 PM PDT

NYtime = datetime("2022-10-01 17:00:00", ...
                  "TimeZone","America/New_York",...
                  "Format","dd-MMM-yyyy hh:mm:ss a z")
NYtime = datetime
   01-Oct-2022 05:00:00 PM EDT

Compare las horas en las dos ciudades. Las 4:00 p. m. en Los Ángeles tienen lugar después de las 5:00 p. m. del mismo día en Nueva York. Cuando especifica zonas horarias, las comparaciones de arreglos de datetime tienen en cuenta la información sobre la zona horaria de cada arreglo.

TF = NYtime < LAtime
TF = logical
   1

Otras comparaciones

MATLAB ofrece otras funciones para las comparaciones de fechas y horas.

  • isbetween: determina si los valores datetime o duration están dentro de un intervalo

  • isdst: determina si los valores datetime tienen lugar durante el horario de verano

  • isnat: determina si los valores datetime son valores NaT (Not-a-Time)

  • isweekend: determina si los valores datetime tienen lugar durante un fin de semana (sábado y domingo)

Por ejemplo, determine si algún elemento de un arreglo de datetime tiene lugar durante el primer trimestre de 2022.

start1Q = datetime("2022-01-01");
end1Q = datetime("2022-04-01");
D = datetime(2022,2:4:10,15,12,0,0)
D = 1x3 datetime
   15-Feb-2022 12:00:00   15-Jun-2022 12:00:00   15-Oct-2022 12:00:00

TF = isbetween(D,start1Q,end1Q)
TF = 1x3 logical array

   1   0   0

Muestre los elementos de D que tienen lugar durante el primer trimestre.

D(TF)
ans = datetime
   15-Feb-2022 12:00:00

Especifique la zona horaria de D estableciendo su propiedad TimeZone. Después, determine si alguno de los elementos tiene lugar durante el horario de verano.

D.TimeZone = "America/New_York";
isdst(D)
ans = 1x3 logical array

   0   1   1

Determine si alguno de los elementos tiene lugar durante el fin de semana.

isweekend(D)
ans = 1x3 logical array

   0   0   1

Para mostrar el día de la semana de los elementos coincidentes, utilice la función day.

weekendDays = D(isweekend(D))
weekendDays = datetime
   15-Oct-2022 12:00:00

day(weekendDays,"name")
ans = 1x1 cell array
    {'Saturday'}

Consulte también

| | | | | | |

Temas relacionados