此示例说明如何使用冒号 (😃 运算符生成 datetime 或 duration 值的序列,该方法与创建等间距数值向量的方法相同。
从 2013 年 11 月 1 日开始至 2013 年 11 月 5 日结束,创建日期时间值的序列。默认步长为一个日历天。
t1 = datetime(2013,11,1,8,0,0);
t2 = datetime(2013,11,5,8,0,0);
t = t1:t2
t = 1x5 datetime
Columns 1 through 3
01-Nov-2013 08:00:00 02-Nov-2013 08:00:00 03-Nov-2013 08:00:00
Columns 4 through 5
04-Nov-2013 08:00:00 05-Nov-2013 08:00:00
使用 caldays 函数指定步长为 2 个日历天。
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
用天以外的其他单位指定步长。创建间隔为 18 小时的日期时间值序列。
t = t1:hours(18):t2
t = 1x6 datetime
Columns 1 through 3
01-Nov-2013 08:00:00 02-Nov-2013 02:00:00 02-Nov-2013 20:00:00
Columns 4 through 6
03-Nov-2013 14:00:00 04-Nov-2013 08:00:00 05-Nov-2013 02:00:00
使用 years、days、minutes 和 seconds 函数,以其他固定长度的日期时间单位创建日期时间和持续时间的序列。创建 0 到 3 分钟之间的 duration 值序列,增量为 30 秒。
d = 0:seconds(30):minutes(3)
d = 1x7 duration
0 sec 30 sec 60 sec 90 sec 120 sec 150 sec 180 sec
将时区赋给 t1 和 t2。在 America/New_York 时区中,t1 现在刚好发生在夏令时更改前。
t1.TimeZone = 'America/New_York';
t2.TimeZone = 'America/New_York';
如果使用一个日历天的步长创建序列,则连续的 datetime 值之间的差并非始终为 24 小时。
t = t1:t2;
dt = diff(t)
dt = 1x4 duration
24:00:00 25:00:00 24:00:00 24:00:00
创建日期时间值的序列,以一个固定长度天间隔开,
t = t1:days(1):t2
t = 1x5 datetime
Columns 1 through 3
01-Nov-2013 08:00:00 02-Nov-2013 08:00:00 03-Nov-2013 07:00:00
Columns 4 through 5
04-Nov-2013 07:00:00 05-Nov-2013 07:00:00
验证连续的 datetime 值之间的差是否为 24 小时。
dt = diff(t)
dt = 1x4 duration
24:00:00 24:00:00 24:00:00 24:00:00
如果用整数来指定步长,则该整数将被解释为若干个 24 小时天数。
t = t1:1:t2
t = 1x5 datetime
Columns 1 through 3
01-Nov-2013 08:00:00 02-Nov-2013 08:00:00 03-Nov-2013 07:00:00
Columns 4 through 5
04-Nov-2013 07:00:00 05-Nov-2013 07:00:00
此示例演示了如何向一个日期时间值添加一个持续时间或日历持续时间来创建日期时间值的序列。
创建一个日期时间标量,表示 2013 年 11 月 1 日上午 8:00。
t1 = datetime(2013,11,1,8,0,0);
将此日期时间值与固定长度的小时时间序列相加。
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
将此日期时间值与日历月的序列相加。
t = t1 + calmonths(1:5)
t = 1x5 datetime
Columns 1 through 3
01-Dec-2013 08:00:00 01-Jan-2014 08:00:00 01-Feb-2014 08:00:00
Columns 4 through 5
01-Mar-2014 08:00:00 01-Apr-2014 08:00:00
t 中的每个日期时间都出现在每个月的第一天。
验证 t 中的日期间隔是否为 1 个月。
dt = caldiff(t)
dt = 1x4 calendarDuration
1mo 1mo 1mo 1mo
确定各日期间的天数。
dt = caldiff(t,'days')
dt = 1x4 calendarDuration
31d 31d 28d 31d
将多个日历月与日期 2014 年 1 月 31 日相加以创建一个日期序列,使每个日期为每个月的最后一天。
t = datetime(2014,1,31) + calmonths(0:11)
t = 1x12 datetime
Columns 1 through 5
31-Jan-2014 28-Feb-2014 31-Mar-2014 30-Apr-2014 31-May-2014
Columns 6 through 10
30-Jun-2014 31-Jul-2014 31-Aug-2014 30-Sep-2014 31-Oct-2014
Columns 11 through 12
30-Nov-2014 31-Dec-2014
此示例说明如何使用 linspace 函数在两个指定的端点之间创建等间距的日期时间或持续时间值。
在 2014 年 4 月 14 日与 2014 年 8 月 4 日之间创建五个等间距日期的序列。首先,定义端点。
A = datetime(2014,04,14);
B = datetime(2014,08,04);
linspace 的第三个输入参数指定了在两个端点间要生成的线性间隔点的个数。
C = linspace(A,B,5)
C = 1x5 datetime
14-Apr-2014 12-May-2014 09-Jun-2014 07-Jul-2014 04-Aug-2014
在 1 和 5.5 小时之间创建六个等间距持续时间的序列。
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
此示例说明如何使用 dateshift 函数来生成日期时间的序列,其中每个实例遵循日历单位或时间单位的有关规则。例如,每个日期时间值必定出现在一个月的开始、一个星期中特定的一天,或是一分钟要结束的时候。序列中生成的日期时间值不一定是等间距的。
一个星期中特定某天的日期
生成一个由后续三个连续星期一组成的日期序列。首先,定义今天的日期。
t1 = datetime('today','Format','dd-MMM-yyyy eee')
t1 = datetime
12-Aug-2022 Fri
dateshift 的第一个输入参数始终是您要从其生成序列的 datetime 数组。将 ‘dayofweek’ 指定为第二个输入参数,表示输出序列中的日期时间值必须落在一个星期中的特定某天。您可以通过数值或名称来指定一周中的星期几。例如,可以将星期一指定为 2 或 ‘Monday’。
t = dateshift(t1,'dayofweek',2,1:3)
t = 1x3 datetime
15-Aug-2022 Mon 22-Aug-2022 Mon 29-Aug-2022 Mon
从 2014 年 4 月 1 日开始生成由每月开始日期组成的序列。将 ‘start’ 指定为 dateshift 的第二个输入参数,表示输出序列中的所有日期时间值应当落在特定时间单位的开始。第三个输入参数定义了时间单位,在本例中为月。dateshift 的最后一个输入参数可以是整数值数组,用来指定 t1 的推移方式。在本例中,0 对应当前月的起始,4 对应从 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
从 2014 年 4 月 1 日开始生成每月末尾日期的序列。
t1 = datetime(2014,04,01);
t = dateshift(t1,'end','month',0:2)
t = 1x3 datetime
30-Apr-2014 31-May-2014 30-Jun-2014
确定各日期间的天数。
dt = caldiff(t,'days')
dt = 1x2 calendarDuration
31d 30d
日期不是等间距的。
您可以指定星期、天和小时等其他时间单位。
t1 = datetime('now')
t1 = datetime
12-Aug-2022 20:05:49
t = dateshift(t1,'start','hour',0:4)
t = 1x5 datetime
Columns 1 through 3
12-Aug-2022 20:00:00 12-Aug-2022 21:00:00 12-Aug-2022 22:00:00
Columns 4 through 5
12-Aug-2022 23:00:00 13-Aug-2022 00:00:00
生成从上一个小时开始的日期时间值的序列。dateshift 最后一个输入参数中的负整数对应早于 t1 的日期时间值。
t = dateshift(t1,'start','hour',-1:1)
t = 1x3 datetime
12-Aug-2022 19:00:00 12-Aug-2022 20:00:00 12-Aug-2022 21:00:00
该博文为原创文章,未经博主同意不得转。
本文章博客地址:https://cplusplus.blog.csdn.net/article/details/127901633
上一篇:几种外贸鞋类英语
下一篇:有哪些幽默的句子形容「很火」?