Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

日付と時刻のシーケンスの生成

ステップ サイズをもつ端点間の 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 datetimeColumns 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 datetime01-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 datetimeColumns 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

関数yearsdaysminutesおよびsecondsを使用して、他の固定長の日付と時刻の単位で datetime および duration のシーケンスを作成します。0 から 3 分の間で、30 秒ずつインクリメントする duration 値のシーケンスを作成します。

d = 0:seconds(30):minutes(3)
d =1x7 duration0 sec 30 sec 60 sec 90 sec 120 sec 150 sec 180 sec

固定長の期間とカレンダー期間のステップ サイズの比較

t1t2にタイム ゾーンを割り当てます。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 duration24:00:00 25:00:00 24:00:00 24:00:00

固定長の 1 日ずつ離れた datetime 値のシーケンスを作成します。

t = t1:days(1):t2
t =1x5 datetimeColumns 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 duration24:00:00 24:00:00 24:00:00 24:00:00

整数ステップ サイズ

整数でステップ サイズを指定すると、1 日を 24 時間とする日数と解釈されます。

t = t1:1:t2
t =1x5 datetimeColumns 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 に加算して、datetime 値のシーケンスを作成する方法を示します。

2013 年 11 月 1 日午前 8 時を表す datetime スカラーを作成します。

t1 = datetime(2013,11,1,8,0,0);

固定長の時間のシーケンスを datetime に加算します。

t = t1 + hours(0:2)
t =1x3 datetime01-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 datetimeColumns 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の各 datetime は、各月の最初の日になります。

t内の日付が 1 か月ずつ離れていることを検証します。

dt = caldiff(t)
dt =1x4 calendarDuration1mo 1mo 1mo 1mo

各日付の間の日数を調べます。

dt = caldiff(t,'days')
dt =1x4 calendarDuration31d 31d 28d 31d

日付 2014 年 1 月 31 日 にいくつかのカレンダー月を加算して、各月の最終日に当たる日付のシーケンスを作成します。

t = datetime(2014,1,31) + calmonths(0:11)
t =1x12 datetimeColumns 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を使用して、指定された 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 datetime14-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 duration01: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 =datetime14-Aug-2021 Sat

dateshiftへの最初の入力は必ず、シーケンスを生成する元のdatetime配列です。“dayofweek”を 2 番目の入力として指定し、出力シーケンスの datetime 値が特定の曜日にならなければならないことを示します。曜日は、番号または名前で指定できます。たとえば、月曜日は2または'Monday'として指定できます。

t = dateshift(t1,“dayofweek”,2,1:3)
t =1x3 datetime16-Aug-2021 Mon 23-Aug-2021 Mon 30-Aug-2021 Mon

月の最初の日付

2014 年 4 月 1 日に始まる月の最初の日付のシーケンスを生成します。'start'dateshiftへの 2 番目の入力として指定し、出力シーケンスのすべての datetime 値が特定の時間単位の最初でなければならないことを示します。3 番目の入力引数は、時間単位を定義します。この場合は月です。dateshiftへの最後の入力は、t1をシフトする方法を指定する整数値の配列にできます。この場合、0は現在の月の開始に対応し、4t1から 4 番目の月の開始に対応します。

t1 = datetime(2014,04,01); t = dateshift(t1,'start','month',0:4)
t =1x5 datetime01 - 4月- 2014年01 - 2014年5月- 2014年01 - jun - 01-Jul-2014 01-Aug-2014

月の最後の日付

2014 年 4 月 1 日に始まる月の最後の日付のシーケンスを生成します。

t1 = datetime(2014,04,01); t = dateshift(t1,'end','month',0:2)
t =1x3 datetime30-Apr-2014 31-May-2014 30-Jun-2014

各日付の間の日数を調べます。

dt = caldiff(t,'days')
dt =1x2 calendarDuration31d 30d

日付は等間隔ではありません。

日付と時刻のその他の単位

週、日、時など、その他の時間単位を指定できます。

t1 = datetime('now')
t1 =datetime14-Aug-2021 03:25:34
t = dateshift(t1,'start','hour',0:4)
t =1x5 datetimeColumns 1 through 3 14-Aug-2021 03:00:00 14-Aug-2021 04:00:00 14-Aug-2021 05:00:00 Columns 4 through 5 14-Aug-2021 06:00:00 14-Aug-2021 07:00:00

過去の日付と時刻

過去の時間に始まる datetime のシーケンスを生成します。dateshiftへの最後の入力が負の整数の場合、t1より前の datetime 値に対応します。

t = dateshift(t1,'start','hour',-1:1)
t =1x3 datetime14-Aug-2021 02:00:00 14-Aug-2021 03:00:00 14-Aug-2021 04:00:00

参考

|