Generar secuencia de fechas y horas
Secuencia de valores de fecha/hora o de duración entre extremos con tamaño de paso
Este ejemplo muestra cómo utilizar el operador de dos puntos (:) para generar secuencias de valores datetime
o duration
de la misma forma que crea vectores numéricos uniformemente espaciados.
Utilizar el tamaño de paso predeterminado
Cree una secuencia de valores de fecha/hora que vaya del 1 de noviembre de 2013 al 5 de noviembre de 2013. El tamaño de paso predeterminado es un día natural.
t1 = datetime(2013,11,1,8,0,0); t2 = datetime(2013,11,5,8,0,0); t = t1:t2
t = 1x5 datetime
01-Nov-2013 08:00:00 02-Nov-2013 08:00:00 03-Nov-2013 08:00:00 04-Nov-2013 08:00:00 05-Nov-2013 08:00:00
Especificar tamaño de paso
Especifique un tamaño de paso de 2 días naturales utilizando la función caldays
.
t = t1:caldays(2):t2
t = 1x3 datetime
01-Nov-2013 08:00:00 03-Nov-2013 08:00:00 05-Nov-2013 08:00:00
Especifique un tamaño de paso en unidades que no sean días. Cree una secuencia de valores de fecha/hora espaciados 18 horas.
t = t1:hours(18):t2
t = 1x6 datetime
01-Nov-2013 08:00:00 02-Nov-2013 02:00:00 02-Nov-2013 20:00:00 03-Nov-2013 14:00:00 04-Nov-2013 08:00:00 05-Nov-2013 02:00:00
Utilice las funciones years
, days
, minutes
y seconds
para crear secuencias de fecha/hora y de duración utilizando otras unidades de fecha y hora de longitud fija. Cree una secuencia de valores de duración entre 0 y 3 minutos, con incrementos de 30 segundos.
d = 0:seconds(30):minutes(3)
d = 1x7 duration
0 sec 30 sec 60 sec 90 sec 120 sec 150 sec 180 sec
Comparar tamaños de paso de duración de longitud fija y de duración de calendario
Asigne una zona horaria a t1
y t2
. En la zona horaria America/New_York
, t1
sucede ahora justo antes de un cambio al horario de verano.
t1.TimeZone = 'America/New_York'; t2.TimeZone = 'America/New_York';
Si crea la secuencia utilizando un tamaño de paso de un día natural, la diferencia entre valores datetime
sucesivos no siempre es de 24 horas.
t = t1:t2; dt = diff(t)
dt = 1x4 duration
24:00:00 25:00:00 24:00:00 24:00:00
Cree una secuencia de valores de fecha/hora espaciados un día de longitud fija.
t = t1:days(1):t2
t = 1x5 datetime
01-Nov-2013 08:00:00 02-Nov-2013 08:00:00 03-Nov-2013 07:00:00 04-Nov-2013 07:00:00 05-Nov-2013 07:00:00
Compruebe que la diferencia entre los valores datetime
sucesivos es de 24 horas.
dt = diff(t)
dt = 1x4 duration
24:00:00 24:00:00 24:00:00 24:00:00
Tamaño de paso de valor entero
Si especifica un tamaño de paso en términos de un valor entero, se interpreta como un número de días de 24 horas.
t = t1:1:t2
t = 1x5 datetime
01-Nov-2013 08:00:00 02-Nov-2013 08:00:00 03-Nov-2013 07:00:00 04-Nov-2013 07:00:00 05-Nov-2013 07:00:00
Añadir duración o duración de calendario para crear secuencias de fechas
Este ejemplo muestra cómo añadir una duración o una duración de calendario a una fecha/hora para crear una secuencia de valores de fecha/hora.
Cree un escalar de fecha/hora que represente el 1 de noviembre de 2013 a las 08:00.
t1 = datetime(2013,11,1,8,0,0);
Añada una secuencia de horas de longitud fija a la fecha/hora.
t = t1 + hours(0:2)
t = 1x3 datetime
01-Nov-2013 08:00:00 01-Nov-2013 09:00:00 01-Nov-2013 10:00:00
Añada una secuencia de meses naturales a la fecha/hora.
t = t1 + calmonths(1:5)
t = 1x5 datetime
01-Dec-2013 08:00:00 01-Jan-2014 08:00:00 01-Feb-2014 08:00:00 01-Mar-2014 08:00:00 01-Apr-2014 08:00:00
Cada fecha/hora en t
sucede el primer día de cada mes.
Compruebe que las fechas en t
están espaciadas un mes.
dt = caldiff(t)
dt = 1x4 calendarDuration
1mo 1mo 1mo 1mo
Determine el número de días entre cada fecha.
dt = caldiff(t,'days')
dt = 1x4 calendarDuration
31d 31d 28d 31d
Añada un número de meses naturales a la fecha, 31 de enero de 2014, para crear una secuencia de fechas que caigan en el último día de cada mes.
t = datetime(2014,1,31) + calmonths(0:11)
t = 1x12 datetime
31-Jan-2014 28-Feb-2014 31-Mar-2014 30-Apr-2014 31-May-2014 30-Jun-2014 31-Jul-2014 31-Aug-2014 30-Sep-2014 31-Oct-2014 30-Nov-2014 31-Dec-2014
Especificar longitud y extremos de una secuencia de fechas o de duración
Este ejemplo muestra cómo utilizar la función linspace
para crear valores de fecha/hora o de duración uniformemente espaciados entre dos extremos especificados.
Cree una secuencia de cinco fechas uniformemente espaciadas entre el 14 de abril de 2014 y el 4 de agosto de 2014. En primer lugar, defina los extremos.
A = datetime(2014,04,14); B = datetime(2014,08,04);
La tercera entrada en linspace
especifica el número de puntos espaciados linealmente que se desea generar entre los extremos.
C = linspace(A,B,5)
C = 1x5 datetime
14-Apr-2014 12-May-2014 09-Jun-2014 07-Jul-2014 04-Aug-2014
Cree una secuencia de seis duraciones uniformemente espaciadas entre 1 y 5,5 horas.
A = duration(1,0,0); B = duration(5,30,0); C = linspace(A,B,6)
C = 1x6 duration
01:00:00 01:54:00 02:48:00 03:42:00 04:36:00 05:30:00
Secuencia de valores de fecha/hora utilizando reglas de calendario
Este ejemplo muestra cómo usar la función dateshift
para generar secuencias de fechas y hora donde cada instancia obedece a una regla relacionada con una unidad de calendario o una unidad de tiempo. Por ejemplo, cada fecha/hora debe suceder a principios de un mes, en un día concreto de la semana o al final de un minuto. Los valores de fecha/hora resultantes en la secuencia no están necesariamente espaciados de manera uniforme.
Fechas en un día concreto de la semana
Genere una secuencia de fechas que se componga de los siguientes tres lunes. Primero, defina la fecha de hoy.
t1 = datetime('today','Format','dd-MMM-yyyy eee')
t1 = datetime
30-Jan-2023 Mon
La primera entrada a dateshift
es siempre el arreglo datetime
a partir del que desea generar una secuencia. Especifique 'dayofweek'
como la segunda entrada para indicar que los valores de fecha/hora en la secuencia de salida deben caer en un día específico de la semana. Puede especificar el día de la semana por número o por nombre. Por ejemplo, puede especificar lunes como 2
o 'Monday'
.
t = dateshift(t1,'dayofweek',2,1:3)
t = 1x3 datetime
30-Jan-2023 Mon 06-Feb-2023 Mon 13-Feb-2023 Mon
Fechas a principios de mes
Genere una secuencia de fechas de principios de mes que empiece el 1 de abril de 2014. Especifique 'start'
como la segunda entrada a dateshift
para indicar que todos los valores de fecha/hora en la secuencia de salida deberían caer al inicio de una unidad de tiempo en concreto. El tercer argumento de entrada define la unidad de tiempo, en ese caso, el mes. La última entrada a dateshift
puede ser un arreglo de valores enteros que especifica cómo debería desplazarse t1
. En este caso, 0
se corresponde con el inicio del mes actual, y 4
se corresponde con el inicio del cuarto mes desde t1
.
t1 = datetime(2014,04,01); t = dateshift(t1,'start','month',0:4)
t = 1x5 datetime
01-Apr-2014 01-May-2014 01-Jun-2014 01-Jul-2014 01-Aug-2014
Fechas a finales de mes
Genere una secuencia de fechas de finales de mes que empiece el 1 de abril de 2014.
t1 = datetime(2014,04,01); t = dateshift(t1,'end','month',0:2)
t = 1x3 datetime
30-Apr-2014 31-May-2014 30-Jun-2014
Determine el número de días entre cada fecha.
dt = caldiff(t,'days')
dt = 1x2 calendarDuration
31d 30d
Las fechas no están uniformemente espaciadas.
Otras unidades de fechas y hora
Puede especificar otras unidades de tiempo como semanas, días y hora.
t1 = datetime('now')
t1 = datetime
30-Jan-2023 14:44:05
t = dateshift(t1,'start','hour',0:4)
t = 1x5 datetime
30-Jan-2023 14:00:00 30-Jan-2023 15:00:00 30-Jan-2023 16:00:00 30-Jan-2023 17:00:00 30-Jan-2023 18:00:00
Instancias anteriores de fechas y hora
Genere una secuencia de valores de fecha/hora que empiece por la hora anterior. Los valores enteros negativos en la última entrada a dateshift
se corresponden con los valores de fecha/hora anteriores a t1
.
t = dateshift(t1,'start','hour',-1:1)
t = 1x3 datetime
30-Jan-2023 13:00:00 30-Jan-2023 14:00:00 30-Jan-2023 15:00:00