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.

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

Consulte también

|