Main Content

timeofday

datetime 配列の深夜からの経過時間

説明

T = timeofday(DT) は、DT の各要素について、深夜からの経過時間に値が等しい duration 配列を返します。

タイム ゾーンのない datetime 配列、および他のほとんどのケースでは、T は次と等しくなります。

E = hours(DT.Hour) + minutes(DT.Minute) + seconds(DT.Second)

DTTimeZone プロパティが夏時間 (DST) を考慮するタイム ゾーンに設定されている場合、timeofday で DST が考慮されます。詳細については、アルゴリズムを参照してください。

出力引数 TDT - dateshift(DT,'start','day') とも等価です。

[T,D] = timeofday(DT) は、datetime 配列 D として DT の値の日付部分も返します。

出力引数 Ddateshift(DT,'start','day') と等価です。

すべて折りたたむ

datetime 配列を作成します。

DT = datetime('now') + hours(1:3)
DT = 1x3 datetime
   25-Jan-2024 23:07:26   26-Jan-2024 00:07:26   26-Jan-2024 01:07:26

各入力値について深夜からの経過時間を計算します。時間を時、分、秒で表示します。

T = timeofday(DT)
T = 1x3 duration
   23:07:26   00:07:26   01:07:26

datetime 配列を作成します。

DT = datetime('now') + hours(1:3)
DT = 1x3 datetime
   25-Jan-2024 20:59:30   25-Jan-2024 21:59:30   25-Jan-2024 22:59:30

DT の日付部分を 2 番目の datetime 配列として返します。D の時、分、秒の成分がすべて深夜 (24 時間形式では 00:00:00) に設定されているため、D は日付のみを表示します。

[T,D] = timeofday(DT)
T = 1x3 duration
   20:59:30   21:59:30   22:59:30

D = 1x3 datetime
   25-Jan-2024   25-Jan-2024   25-Jan-2024

夏時間 (DST) シフトが適用される日の深夜以降の経過時間を計算します。

datetime 配列を作成します。TimeZone プロパティを、DST が実施されるタイム ゾーンに設定します。日付を DST シフトが発生した日に設定します。

tz = 'America/New_York';
fmt = 'dd-MMM-yyyy HH:mm:ss z';
DT = datetime(2015,3,8,'TimeZone',tz,'Format',fmt) + hours(1:4)
DT = 1x4 datetime
   08-Mar-2015 01:00:00 EST   08-Mar-2015 03:00:00 EDT   08-Mar-2015 04:00:00 EDT   08-Mar-2015 05:00:00 EDT

経過時間を計算します。このタイム ゾーンでは DST シフトが 2015 年 3 月 8 日の午前 2 時に発生しました。timeofday では、この日の午前 2 時以降の時刻にシフトが適用されます。経過時間を時間数で表示するように T の書式を設定します。

T = timeofday(DT);
T.Format = 'h'
T = 1x4 duration
   1 hr   2 hr   3 hr   4 hr

比較のために、DT の時、分、秒の成分を使用して経過時間を計算します。この計算では DST シフトは考慮されません。

E = hours(DT.Hour) + minutes(DT.Minute) + seconds(DT.Second)
E = 1x4 duration
   1 hr   3 hr   4 hr   5 hr

別の datetime 配列内の時刻に基づいて、datetime 配列の時刻を設定します。

時刻を設定する方法は 2 つあります。

  • timeofday を使用して最初の datetime 配列から時刻部分を分割し、2 番目の datetime 配列に時刻部分を追加します。

  • 2 番目の datetime 配列の HourMinuteSecond の成分を最初の datetime 配列の HourMinuteSecond の成分と等しくなるように設定します。

最初の方法を使用した場合、夏時間 (DST) シフトが常に正しく考慮されるとは限りません。DST シフトを常に正しく処理できるのは 2 番目の方法だけです。

datetime 配列を作成します。各要素に時刻の異なる時刻の成分を含めます。

DT1 = datetime(2015,3,7) + hours(1:4)
DT1 = 1x4 datetime
   07-Mar-2015 01:00:00   07-Mar-2015 02:00:00   07-Mar-2015 03:00:00   07-Mar-2015 04:00:00

2 番目の datetime 配列を作成します。各要素に同じ日付と時刻の成分を含めます。

DT2 = datetime(2015,3,[8 8 8 8])
DT2 = 1x4 datetime
   08-Mar-2015   08-Mar-2015   08-Mar-2015   08-Mar-2015

DT1 の時刻に基づいて DT2 の時刻を設定します。DT1DT2 にはタイム ゾーンがないため、それらの時刻の成分は同じになります。

DT2 = dateshift(DT2,'start','day') + timeofday(DT1)
DT2 = 1x4 datetime
   08-Mar-2015 01:00:00   08-Mar-2015 02:00:00   08-Mar-2015 03:00:00   08-Mar-2015 04:00:00

datetime 配列を作成し、各要素の TimeZone プロパティを 'America/New_York' に設定します。DT3 にはタイム ゾーンがあり、DST シフトが 2015 年 3 月 8 日に発生しているため、DT3 の時刻の成分は DT1 と同じになりません。

tz = 'America/New_York';
fmt = 'dd-MMM-yyyy HH:mm:ss z';
DT3 = datetime(2015,3,8,'TimeZone',tz,'Format',fmt) + timeofday(DT1)
DT3 = 1x4 datetime
   08-Mar-2015 01:00:00 EST   08-Mar-2015 03:00:00 EDT   08-Mar-2015 04:00:00 EDT   08-Mar-2015 05:00:00 EDT

深夜からの経過時間を計算します。timeofday で DST シフトが考慮されます。経過時間から DT3 の時刻が正しくないことがわかります。DT3 の最後の時刻は午前 5 時に対応します。しかし、DT1 では深夜から 4 時間しか経過していません。

T = timeofday(DT3)
T = 1x4 duration
   01:00:00   02:00:00   03:00:00   04:00:00

タイム ゾーンや日付に関係なく DT4 の時刻を正しく設定するには、DT1HourMinute、および Second のプロパティを使用します。

DT4 = datetime(2015,3,[8 8 8 8],'TimeZone',tz,'Format',fmt);
DT4.Hour = DT1.Hour;
DT4.Minute = DT1.Minute;
DT4.Second = DT1.Second;
DT4
DT4 = 1x4 datetime
   08-Mar-2015 01:00:00 EST   08-Mar-2015 03:00:00 EDT   08-Mar-2015 03:00:00 EDT   08-Mar-2015 04:00:00 EDT

このタイム ゾーンでは DST シフトがその時刻に発生したため、東部標準時 2015 年 3 月 8 日午前 2 時という時刻は存在しません。結果の 2 番目の要素は時刻の成分が東部夏時間の午前 3 時になります。

入力引数

すべて折りたたむ

入力の日付と時刻。datetime 配列として指定します。

出力引数

すべて折りたたむ

入力配列の時刻部分。duration 配列として返されます。

入力配列の日付部分。datetime 配列として返されます。

アルゴリズム

datetime 配列の TimeZone プロパティを夏時間 (DST) が実施されるタイム ゾーンに設定できます。関数 timeofday では DST が考慮されます。

  • 入力引数 DT がタイム ゾーンのない datetime 配列の場合、出力 T は次とも等しくなります。

    E = hours(DT.Hour) + minutes(DT.Minute) + seconds(DT.Second)

  • DTTimeZone プロパティが DST が実施されないタイム ゾーンに設定されている場合、TE と等しくなります。

  • DTTimeZone プロパティが DST が実施されるタイム ゾーンに設定されている場合、DST シフトが発生した後の日の timeofday に DST シフトが適用されます。DST シフトが発生した後の日の時刻では、TE の間にそのシフト分の差が生じます。

拡張機能

バージョン履歴

R2014b で導入