日付と時刻のシーケンスの生成
ステップ サイズをもつ端点間の datetime または duration 値のシーケンス
次の例は、コロン (:) 演算子を使用して、等間隔の数値ベクトルを作成するのと同じ方法で、datetime
値または duration
値のシーケンスを生成する方法を示します。
既定のステップ サイズを使用
2013 年 11 月 1 日に開始し、2013 年 11 月 5 日に終了する datetime 値のシーケンスを作成します。既定のステップ サイズは 1 カレンダー日です。
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
ステップ サイズの指定
関数 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 時間間隔の datetime 値のシーケンスを作成します。
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
関数 years
、days
、minutes
および seconds
を使用して、他の固定長の日付と時刻の単位で datetime および duration のシーケンスを作成します。0 から 3 分の間で、30 秒ずつインクリメントする duration 値のシーケンスを作成します。
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';
1 カレンダー日をステップ サイズとしてシーケンスを作成すると、連続する datetime
値の間の差は常に 24 時間というわけではありません。
t = t1:t2; dt = diff(t)
dt = 1x4 duration
24:00:00 25:00:00 24:00:00 24:00:00
固定長の 1 日ずつ離れた datetime 値のシーケンスを作成します。
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
連続する datetime
値の間の差が 24 時間であることを検証します。
dt = diff(t)
dt = 1x4 duration
24:00:00 24:00:00 24:00:00 24:00:00
整数ステップ サイズ
整数でステップ サイズを指定すると、1 日を 24 時間とする日数と解釈されます。
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
期間またはカレンダー期間を加算して日付のシーケンスを作成する
次の例では、期間またはカレンダー期間を datetime に加算して、datetime 値のシーケンスを作成する方法を示します。
2013 年 11 月 1 日午前 8 時を表す datetime スカラーを作成します。
t1 = datetime(2013,11,1,8,0,0);
固定長の時間のシーケンスを datetime に加算します。
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
カレンダー月のシーケンスを datetime に加算します。
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
t
の各 datetime は、各月の最初の日になります。
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
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
日付または期間のシーケンスの長さと端点の指定
次の例では、関数 linspace
を使用して、指定された 2 つの端点間の等間隔の datetime または duration 値を作成します。
2014 年 4 月 14 日と 2014 年 8 月 4 日の間で等間隔の 5 つの日付のシーケンスを作成します。まず、端点を定義します。
A = datetime(2014,04,14); B = datetime(2014,08,04);
linspace
への 3 番目の入力は、端点の間に生成する線形に配置された点の数を指定します。
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 時間の間に 6 個の等間隔な duration のシーケンスを作成します。
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
カレンダーの規則を使用する datetime 値のシーケンス
次の例では、関数 dateshift
を使用して、各インスタンスがカレンダー単位または時間の単位に関係する規則に従うような、日付と時刻のシーケンスを生成します。たとえば、各 datetime は月の最初、特定の曜日または分の終わりにならなければなりません。シーケンス内の結果の datetime 値は必ずしも等間隔ではありません。
特定の曜日の日付
次の 3 回の月曜日で構成される日付のシーケンスを生成します。まず、今日の日付を定義します。
t1 = datetime('today','Format','dd-MMM-yyyy eee')
t1 = datetime
12-Feb-2024 Mon
dateshift
への最初の入力は必ず、シーケンスを生成する元の datetime
配列です。'dayofweek'
を 2 番目の入力として指定し、出力シーケンスの datetime 値が特定の曜日にならなければならないことを示します。曜日は、番号または名前で指定できます。たとえば、月曜日は 2
または 'Monday'
として指定できます。
t = dateshift(t1,'dayofweek',2,1:3)
t = 1x3 datetime
12-Feb-2024 Mon 19-Feb-2024 Mon 26-Feb-2024 Mon
月の最初の日付
2014 年 4 月 1 日に始まる月の最初の日付のシーケンスを生成します。'start'
を dateshift
への 2 番目の入力として指定し、出力シーケンスのすべての datetime 値が特定の時間単位の最初でなければならないことを示します。3 番目の入力引数は、時間単位を定義します。この場合は月です。dateshift
への最後の入力は、t1
をシフトする方法を指定する整数値の配列にできます。この場合、0
は現在の月の開始に対応し、4
は t1
から 4 番目の月の開始に対応します。
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-Feb-2024 23:31:49
t = dateshift(t1,'start','hour',0:4)
t = 1x5 datetime
12-Feb-2024 23:00:00 13-Feb-2024 00:00:00 13-Feb-2024 01:00:00 13-Feb-2024 02:00:00 13-Feb-2024 03:00:00
過去の日付と時刻
過去の時間に始まる datetime のシーケンスを生成します。dateshift
への最後の入力が負の整数の場合、t1
より前の datetime 値に対応します。
t = dateshift(t1,'start','hour',-1:1)
t = 1x3 datetime
12-Feb-2024 22:00:00 12-Feb-2024 23:00:00 13-Feb-2024 00:00:00