このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
日付と時刻の算術演算
次の例では、日付と時刻の値の加減算を行って、将来や過去の日付および経過期間を正確な単位またはカレンダー単位で計算する方法を示します。加減乗除の演算子は、他の MATLAB® データ型に対して使用するのと同じ方法で、日付と時刻の配列に対して使用できます。ただし、日付と時刻に固有の動作がいくつかあります。
datetime 配列への期間の加算と減算
datetime スカラーを作成します。既定では、datetime 配列はタイム ゾーンに関連付けられていません。
t1 = datetime('now')
t1 = datetime
03-Aug-2023 21:00:27
時間のシーケンスを加算して、将来の時点を見つけます。
t2 = t1 + hours(1:3)
t2 = 1x3 datetime
03-Aug-2023 22:00:27 03-Aug-2023 23:00:27 04-Aug-2023 00:00:27
t2
の各 datetime 値のペアの間の差が 1 時間であることを確認します。
dt = diff(t2)
dt = 1x2 duration
01:00:00 01:00:00
diff
は、正確な時、分および秒数で、duration を返します。
datetime から分のシーケンスを減算して、過去の時点を見つけます。
t2 = t1 - minutes(20:10:40)
t2 = 1x3 datetime
03-Aug-2023 20:40:27 03-Aug-2023 20:30:27 03-Aug-2023 20:20:27
datetime
配列に数値配列を加算します。MATLAB は、数値配列内の各値を、厳密な 1 日 (24 時間) の日数として処理します。
t2 = t1 + [1:3]
t2 = 1x3 datetime
04-Aug-2023 21:00:27 05-Aug-2023 21:00:27 06-Aug-2023 21:00:27
タイムゾーンのある datetime への加算
異なる datetime 値を処理する場合または夏時間の変更を考慮する場合は、タイム ゾーンに関連付けられた datetime 配列を処理します。ニューヨークの 2014 年 3 月 8 日を表す datetime
スカラーを作成します。
t1 = datetime(2014,3,8,0,0,0,'TimeZone','America/New_York')
t1 = datetime
08-Mar-2014
固定長 (24 時間) の日のシーケンスを加算して、将来の時点を見つけます。
t2 = t1 + days(0:2)
t2 = 1x3 datetime
08-Mar-2014 00:00:00 09-Mar-2014 00:00:00 10-Mar-2014 01:00:00
夏時間へのシフトが 2014 年 3 月 9 日に起きるため、t2
の 3 番目の datetime は午前 0 時にはなりません。
t2
の各 datetime 値のペアの間の差が 24 時間であることを確認します。
dt = diff(t2)
dt = 1x2 duration
24:00:00 24:00:00
関数 years
、hours
、minutes
および seconds
の出力を加算することによって、それぞれ年、時、分および秒など、他の単位で固定長の期間を加算できます。
夏時間の変更を考慮するには、期間ではなくカレンダー期間を処理します。カレンダー期間は、datetime 値への加減算を行うときに夏時間へのシフトを考慮します。
t1
にカレンダー日数を加算します。
t3 = t1 + caldays(0:2)
t3 = 1x3 datetime
08-Mar-2014 09-Mar-2014 10-Mar-2014
3 月 9 日に起きた夏時間へのシフトにより、t3
内の各 datetime 値のペアの間の差が、常に 24 時間ではないことを確認します。
dt = diff(t3)
dt = 1x2 duration
24:00:00 23:00:00
カレンダー期間の datetime 配列への加算
2014 年 1 月 31 日に、いくつかのカレンダー月を加算します。
t1 = datetime(2014,1,31)
t1 = datetime
31-Jan-2014
t2 = t1 + calmonths(1:4)
t2 = 1x4 datetime
28-Feb-2014 31-Mar-2014 30-Apr-2014 31-May-2014
t2
の各 datetime は、各月の最後の日になります。
関数 caldiff
を使用して、t2
の各 datetime 値のペア間の差を、カレンダー日数で計算します。
dt = caldiff(t2,'days')
dt = 1x3 calendarDuration
31d 30d 31d
月の日数は月によって異なるため、dt
の連続する datetime 値のペア間の日数は常に同じではありません。
2014 年 1 月 31 日に、いくつかのカレンダー年を加算します。
t2 = t1 + calyears(0:4)
t2 = 1x5 datetime
31-Jan-2014 31-Jan-2015 31-Jan-2016 31-Jan-2017 31-Jan-2018
関数 caldiff
を使用して、t2
の各 datetime 値のペア間の差を、カレンダー日数で計算します。
dt = caldiff(t2,'days')
dt = 1x4 calendarDuration
365d 365d 366d 365d
2016 年はうるう年で 366 日あるため、dt
の連続する datetime 値のペア間の日数は常に同じではありません。
関数 calquarters
、calweeks
および caldays
を使用して、カレンダー四半期、カレンダー週またはカレンダー日の配列を作成し、datetime 配列に対して加減算を行うことができます。
カレンダー期間の加算は可換的ではありません。複数の calendarDuration
配列を datetime に加算すると、MATLAB ではコマンドに表示された順に加算されます。
2014 年 1 月 31 日に 3 カレンダー月を加算してから 30 カレンダー日を加算します。
t2 = datetime(2014,1,31) + calmonths(3) + caldays(30)
t2 = datetime
30-May-2014
同じ日付に、最初に 30 カレンダー日を加算してから 3 カレンダー月を加算します。datetime にカレンダー期間を加算するとき、加算される日数は元の日付に依存するため、結果は同じではありません。
t2 = datetime(2014,1,31) + caldays(30) + calmonths(3)
t2 = datetime
02-Jun-2014
カレンダー期間の算術演算
2 つのカレンダー期間を作成し、その合計を確認します。
d1 = calyears(1) + calmonths(2) + caldays(20)
d1 = calendarDuration
1y 2mo 20d
d2 = calmonths(11) + caldays(23)
d2 = calendarDuration
11mo 23d
d = d1 + d2
d = calendarDuration
2y 1mo 43d
2 つ以上のカレンダー期間を合計する場合、12 を超える月数は年数に繰り上げられます。しかし、月内の日数は月によって異なるため、大きい数字の日数は月数には繰り上げられません。
d
に 2 を乗算して増加させます。カレンダー期間は整数でなければならないため、整数値以外を乗算することはできません。
2*d
ans = calendarDuration
4y 2mo 86d
経過時間の正確な単位での計算
ある datetime
配列をもう 1 つの配列から減算して、時、分および秒の正確な数字で経過時間を計算します。
datetime 値のシーケンスと前の日の開始との間の時間の正確な長さを見つけます。
t2 = datetime('now') + caldays(1:3)
t2 = 1x3 datetime
04-Aug-2023 21:00:28 05-Aug-2023 21:00:28 06-Aug-2023 21:00:28
t1 = datetime('yesterday')
t1 = datetime
02-Aug-2023
dt = t2 - t1
dt = 1x3 duration
69:00:28 93:00:28 117:00:28
whos dt
Name Size Bytes Class Attributes dt 1x3 40 duration
dt
は、時:分:秒の形式の期間を含みます。
dt
の Format
プロパティを変更することによって、日数の単位で経過期間を表示します。
dt.Format = 'd'
dt = 1x3 duration
2.8753 days 3.8753 days 4.8753 days
dt
に 1.2 を乗算して、duration 値を拡大します。期間は正確な長さをもっているため、小数値による乗算および除算が可能です。
dt2 = 1.2*dt
dt2 = 1x3 duration
3.4504 days 4.6504 days 5.8504 days
カレンダー単位の経過時間の計算
関数 between
を使用して、2 つの日付間で経過するカレンダー年、月および日数を見つけます。
t1 = datetime('today')
t1 = datetime
03-Aug-2023
t2 = t1 + calmonths(0:2) + caldays(4)
t2 = 1x3 datetime
07-Aug-2023 07-Sep-2023 07-Oct-2023
dt = between(t1,t2)
dt = 1x3 calendarDuration
4d 1mo 4d 2mo 4d