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 | Significado cuando se comparan valores |
---|---|---|
| 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 deduration
, MATLAB convierte de forma implícita el texto al valordatetime
oduration
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 valorduration
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 valoresdatetime
oduration
están dentro de un intervaloisdst
: determina si los valoresdatetime
tienen lugar durante el horario de veranoisnat
: determina si los valoresdatetime
son valoresNaT
(Not-a-Time)isweekend
: determina si los valoresdatetime
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
datetime
| duration
| isbetween
| isdst
| isnat
| isweekend
| day
| month