Main Content

calendarDuration

可変長カレンダー単位の時間の長さ

説明

"カレンダー期間配列" 内の値は、経過時間を可変長のカレンダー単位で表します。たとえば、1 か月の日数は、何月であるかによって異なります。カレンダー期間の計算では、夏時間の変更とうるう年が考慮されます。日数や月数などのカレンダー単位が含まれる datetime 配列の計算を簡略化するには、カレンダー期間配列を使用します。

The datetime data type represents points in time, while the duration and calendarDuration data types represent elapsed time using fixed-length and calendar time units, respectively.

作成

時間単位を指定したカレンダー期間配列は、関数 calyearscalquarterscalmonthscalweekscaldays を使用して作成できます。たとえば、カレンダー月数 1、2、3 の経過時間をもつ配列を作成するには、関数 calmonths を使用します。

M = calmonths(1:3)
M = 

  1×3 calendarDuration array

   1mo   2mo   3mo

また、以下に説明する関数 calendarDuration を使用してカレンダー期間配列を作成することもできます。

説明

L = calendarDuration(Y,M,D) は、年数、月数、日数の値をそれぞれ格納する数値配列 YMD からカレンダー期間配列を作成します。

L = calendarDuration(Y,M,D,H,MI,S) は、HMIS でそれぞれ指定された時間数、分数、秒数も含みます。

L = calendarDuration(Y,M,D,T) は、年数、月数、日数の値を格納する数値配列と経過時間を格納する duration 配列 T からカレンダー期間配列を作成します。

L = calendarDuration(X) は、数値行列からカレンダー期間配列を作成します。

L = calendarDuration(___,'Format',displayFormat) はさらに、LFormat プロパティの値として displayFormat を指定します。Format プロパティは、L の表示を変更しますが、その値は変更しません。この構文では、前述の構文の引数のいずれかを使用できます。

入力引数

すべて展開する

年数、月数、および日数。数値配列として指定します。これらの配列は同じサイズでなければなりませんが、いずれもスカラーにすることができます。Y,M,D には整数値のみを指定しなければなりません。

12 より大きい月数の値の指定は、年数と月数を指定することと等価です。たとえば 25 か月は 2 年 1 か月に相当します。ただし、日数の値は月数に換算されません。1 か月の日数は一定ではなく、カレンダー期間を特定の datetime に加算するまで決定できないためです。

例: L = calendarDuration(2,10,24) は 2 年 10 か月 24 日のカレンダー期間を返します。

時間数、分数、および秒数。数値配列として指定します。これらの配列は同じサイズでなければなりませんが、いずれもスカラーにすることができます。秒 S には小数部を指定できます。配列 H と配列 MI には整数値のみを指定しなければなりません。

12 より大きい月数の値の指定は、年数と月数を指定することと等価です。たとえば 25 か月は 2 年 1 か月に相当します。60 より大きい分数の値は、時間数に換算されます。60 より大きい秒数の値は、分数に換算されます。ただし、日の値は月数に換算されません。1 か月の日数は一定ではなく、カレンダー期間を特定の datetime に加算するまで決定できないためです。同様に、時間の値もカレンダー日数には換算されません。

例: L = calendarDuration(2,10,24,12,45,07.451) は、2 年 10 か月 24 日 12 時間 45 分 7.451 秒のカレンダー期間を返します。

経過時間。duration 配列として指定します。T は入力引数 YMD と同じサイズであるか、スカラーでなければなりません。

例: T = hours(5); L = calendarDuration(2,10,24,T) は、5 時間の期間を L に加算します。

年数、月数、日数およびオプションの時間。数値行列として指定します。X は 3 列または 6 列でなければなりません。最初の 3 列には、年数、月数、および日数がそれぞれ含まれます。X が 6 列の場合、最後の 3 列には、時間数、分数、および秒数がそれぞれ含まれます。

6 列目を除いて、すべての列に整数値を指定しなければなりません。6 列目には、秒数を小数で指定できます。

例: L = calendarDuration([2 10 24]) は 2 年 10 か月 24 日のカレンダー期間を返します。

例: L = calendarDuration([2 10 24 12 45 07.451]) は、2 年 10 か月 24 日 12 時間 45 分 7.451 秒のカレンダー期間を返します。

プロパティ

すべて展開する

カレンダー期間の表示形式。文字 yqmwdt をこの順序で組み合わせて指定します。この形式には、md、および t が含まれなければなりません。

文字単位必須
yいいえ
q四半期 (3 か月の倍数)いいえ
mはい
wいいえ
dはい
t時間 (時、分、秒)はい

小数点の秒数として表示される桁数を指定するには、関数 format を使用します。

日付または時間の成分の値がゼロの場合は表示されません。

例: L.Format = 'yqmdt' は、L の各値を、カレンダー年数、四半期数、月数、日数およびその時間成分として表示します。

すべて折りたたむ

datetime 値を作成します。

D = datetime(2017,7,1)
D = datetime
   01-Jul-2017

各値が異なる月の最初の日から始まる datetime 配列を作成します。このような配列を作成する便利な方法の 1 つは、カレンダー月数の配列を D に加算することです。

最初に、関数 calmonths を使用してカレンダー月数の配列を作成します。

C = calmonths(0:3)
C = 1x4 calendarDuration
   0mo   1mo   2mo   3mo

次に、DC を加算します。C はカレンダー期間配列であるため、この演算では月によって日数の異なることが考慮されます。

M = D + C
M = 1x4 datetime
   01-Jul-2017   01-Aug-2017   01-Sep-2017   01-Oct-2017

うるう年と夏時間のために、カレンダー年数、月数および日数はさまざまな長さになります。これらのさまざまな時間の長さに対応するために、datetime 配列の算術演算にカレンダー期間配列を使用します。

L = calendarDuration(1,3,15)
L = calendarDuration
   1y 3mo 15d

日数を表す数値配列を作成します。

D = [1 3;4 2]
D = 2×2

     1     3
     4     2

経過時間を時間数で表す duration 配列を作成します。1 つの要素は 1 日より長い 25 時間を指定します。

T = hours([1 2; 25 12])
T = 2x2 duration
    1 hr    2 hr
   25 hr   12 hr

カレンダー期間配列を作成します。入力引数 DT と年数と月数のスカラー値を指定します。2 番目の入力、13 は 1 年より長い月数を指定します。

L = calendarDuration(1,13,D,T)
L = 2x2 calendarDuration
    2y 1mo 1d 1h 0m 0s    2y 1mo 3d 2h 0m 0s
   2y 1mo 4d 25h 0m 0s   2y 1mo 2d 12h 0m 0s

12 より大きい月の値は年数に換算されて表示されます。ただし、24 より大きい時間値は表示の日数に換算されません。夏時間のため、カレンダー日の時間数は必ずしも 24 時間ではありません。

カレンダー期間配列を作成し、値を月数、週数、日数および時間で表示する形式を指定します。

L = calendarDuration(1,1,5:9,'Format','mwdt')
L = 1x5 calendarDuration
      13mo 5d      13mo 6d      13mo 1w   13mo 1w 1d   13mo 1w 2d

この形式には、年数を示す 'y' が含まれないため、1 年と 1 か月の入力値はその合計値 13mo として表示されます。't' は指定しなければなりませんが、時間数、分数、秒数がすべてゼロの場合、時間の成分は表示されません。

ヒント

  • カレンダー期間配列を受け入れる関数、または返す関数の詳細については、日付と時刻を参照してください。

  • 複数の単位を含む calendarDuration 配列を datetime に追加する場合、MATLAB® では常に大きい単位から順番に追加します。t が datetime の場合、このコマンドは次のようになります。

    t + calendarDuration(1,2,3)
    は、以下と等価です。
    t + calyears(1) + calmonths(2) + caldays(3)

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2014b で導入