Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Aritmética de fecha y hora

Este ejemplo muestra cómo sumar y restar valores de fecha y hora para calcular las fechas futuras y pasadas y las duraciones que transcurrieron en unidades exactas o unidades de calendario. Puede añadir, restar, multiplicar y dividir matrices de fecha y hora de la misma manera que utiliza estos operadores con otros tipos de datos de MATLAB®. Sin embargo, hay algún comportamiento que es específico de las fechas y la hora.

Sumar y restar duraciones a la matriz de fecha y hora

Cree un escalar DateTime. De forma predeterminada, las matrices de fecha y hora no están asociadas a una zona horaria.

t1 = datetime('now')
t1 = datetime
   03-Feb-2019 10:16:11

Encuentre puntos futuros en el tiempo añadiendo una secuencia de horas.

t2 = t1 + hours(1:3)
t2 = 1x3 datetime array
   03-Feb-2019 11:16:11   03-Feb-2019 12:16:11   03-Feb-2019 13:16:11

Compruebe que la diferencia entre cada par de valores DATETIME en es de 1 hora.t2

dt = diff(t2)
dt = 1x2 duration array
   01:00:00   01:00:00

Devuelve duraciones en términos de número exacto de horas, minutos y segundos.diff

Reste una secuencia de minutos de una fecha y hora para buscar puntos pasados en el tiempo.

t2 = t1 - minutes(20:10:40)
t2 = 1x3 datetime array
   03-Feb-2019 09:56:11   03-Feb-2019 09:46:11   03-Feb-2019 09:36:11

Agregue una matriz numérica a una matriz.datetime MATLAB® trata cada valor de la matriz numérica como un número de días exactos de 24 horas.

t2 = t1 + [1:3]
t2 = 1x3 datetime array
   04-Feb-2019 10:16:11   05-Feb-2019 10:16:11   06-Feb-2019 10:16:11

Agregar a DateTime con zona horaria

Si trabaja con valores DATETIME en diferentes zonas horarias, o si desea tener en cuenta los cambios de horario de verano, trabaje con matrices de fecha y hora asociadas a zonas horarias. Cree un escalar que represente el 8 de marzo de 2014 en Nueva York.datetime

t1 = datetime(2014,3,8,0,0,0,'TimeZone','America/New_York')
t1 = datetime
   08-Mar-2014 00:00:00

Encuentre puntos futuros en el tiempo añadiendo una secuencia de días de duración fija (24 horas).

t2 = t1 + days(0:2)
t2 = 1x3 datetime array
   08-Mar-2014 00:00:00   09-Mar-2014 00:00:00   10-Mar-2014 01:00:00

Dado que se produjo un cambio de horario de verano el 9 de marzo de 2014, el tercer DateTime en no se produce a medianoche.t2

Compruebe que la diferencia entre cada par de valores DATETIME en es de 24 horas.t2

dt = diff(t2)
dt = 1x2 duration array
   24:00:00   24:00:00

Puede Agregar duraciones de longitud fija en otras unidades, como años, horas, minutos y segundos, agregando las salidas de las funciones, y, respectivamente.yearshoursminutesseconds

Para tener en cuenta los cambios de horario de verano, debe trabajar con duraciones de calendario en lugar de duraciones. La cuenta de duraciones de calendario para el horario de verano cambia cuando se agregan o se restan de los valores DateTime.

Agregue un número de días calendario a.t1

t3 = t1 + caldays(0:2)
t3 = 1x3 datetime array
   08-Mar-2014 00:00:00   09-Mar-2014 00:00:00   10-Mar-2014 00:00:00

Ver que la diferencia entre cada par de valores DATETIME en no siempre es 24 horas debido al cambio de horario de verano que se produjo el 9 de marzo.t3

dt = diff(t3)
dt = 1x2 duration array
   24:00:00   23:00:00

Agregar duraciones de calendario a matriz de fecha y hora

Agregue varios meses naturales al 31 de enero de 2014.

t1 = datetime(2014,1,31)
t1 = datetime
   31-Jan-2014

t2 = t1 + calmonths(1:4)
t2 = 1x4 datetime array
   28-Feb-2014   31-Mar-2014   30-Apr-2014   31-May-2014

Cada fecha y hora se produce el último día de cada mes.t2

Calcule la diferencia entre cada par de valores DATETIME en términos de un número de días calendario utilizando la función.t2caldiff

dt = caldiff(t2,'days')
dt = 1x3 calendarDuration array
   31d   30d   31d

El número de días entre pares sucesivos de valores DATETIME en no siempre es el mismo porque los diferentes meses constan de un número diferente de días.dt

Agregue varios años naturales al 31 de enero de 2014.

t2 = t1 + calyears(0:4)
t2 = 1x5 datetime array
   31-Jan-2014   31-Jan-2015   31-Jan-2016   31-Jan-2017   31-Jan-2018

Calcule la diferencia entre cada par de valores DATETIME en términos de un número de días calendario utilizando la función.t2caldiff

dt = caldiff(t2,'days')
dt = 1x4 calendarDuration array
   365d   365d   366d   365d

El número de días entre pares sucesivos de valores DATETIME en no siempre es el mismo porque 2016 es un año bisiesto y tiene 366 días.dt

Puede usar las funciones para crear matrices de trimestres de calendario, semanas de calendario o días calendario que agregue o reste de las matrices de fecha y hora.calquarterscalweekscaldays

La adición de duraciones de calendario no es conmutativa. Cuando se agrega más de una matriz a una fecha y hora, MATLAB® las agrega en el orden en que aparecen en el comando.calendarDuration

Agregue 3 meses naturales seguidos de 30 días naturales al 31 de enero de 2014.

t2 = datetime(2014,1,31) + calmonths(3) + caldays(30)
t2 = datetime
   30-May-2014

Primero agregue 30 días naturales a la misma fecha y, a continuación, agregue 3 meses naturales. El resultado no es el mismo, ya que cuando se agrega una duración de calendario a una fecha y hora, el número de días agregados depende del original.

t2 = datetime(2014,1,31) + caldays(30) + calmonths(3)
t2 = datetime
   02-Jun-2014

Duración del calendario aritmética

Cree dos duraciones de calendario y luego encuentre su suma.

d1 = calyears(1) + calmonths(2) + caldays(20)
d1 = calendarDuration
   1y 2mo 20d

d2 = calmonths(11) + caldays(23)
d2 = calendarDuration
   11mo 23d

d = d1 + d2
d = calendarDuration
   2y 1mo 43d

Cuando se suman dos o más duraciones de calendario, un número de meses mayor que 12 Roll over a un número de años. Sin embargo, un gran número de días no se distribuye a un número de meses, porque diferentes meses constan de diferentes números de días.

Aumentar multiplicándola por un factor de 2.d Los valores de duración del calendario deben ser enteros, por lo que puede multiplicarlos solo por valores enteros.

2*d
ans = calendarDuration
   4y 2mo 86d

Calcule el tiempo transcurrido en unidades exactas

Reste una matriz de otra para calcular el tiempo transcurrido en términos de un número exacto de horas, minutos y segundos.datetime

Busque el período de tiempo exacto entre una secuencia de valores DATETIME y el inicio del día anterior.

t2 = datetime('now') + caldays(1:3)
t2 = 1x3 datetime array
   04-Feb-2019 10:16:12   05-Feb-2019 10:16:12   06-Feb-2019 10:16:12

t1 = datetime('yesterday')
t1 = datetime
   02-Feb-2019

dt = t2 - t1
dt = 1x3 duration array
    58:16:12    82:16:12   106:16:12

whos dt
  Name      Size            Bytes  Class       Attributes    dt        1x3                40  duration               

contiene duraciones en el formato, horas: minutos: segundos.dt

Ver las duraciones transcurrido en unidades de días cambiando la propiedad de.Formatdt

dt.Format = 'd'
dt = 1x3 duration array
   2.4279 days   3.4279 days   4.4279 days

Escale los valores de duración multiplicando por un factor de 1,2.dt Dado que las duraciones tienen una longitud exacta, puede multiplicarlas y dividirlas por valores fraccionarios.

dt2 = 1.2*dt
dt2 = 1x3 duration array
   2.9135 days   4.1135 days   5.3135 days

Calcular el tiempo transcurrido en unidades de calendario

Utilice la función para encontrar el número de años, meses y días naturales transcurridos entre dos fechas.between

t1 = datetime('today')
t1 = datetime
   03-Feb-2019

t2 = t1 + calmonths(0:2) + caldays(4)
t2 = 1x3 datetime array
   07-Feb-2019   07-Mar-2019   07-Apr-2019

dt = between(t1,t2)
dt = 1x3 calendarDuration array
       4d   1mo 4d   2mo 4d

Consulte también

| |