ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

datetime 配列、数値およびテキストの間の変換

概要

datetime は時点を表すのに最適なデータ型です。datetime 値は柔軟な表示形式と最大ナノ秒の精度をもち、タイムゾーン、夏時間、うるう秒に対応しています。ただし、MATLAB® R2014a 以前のバージョンで作成されたコードを使用する場合や、そのようなバージョンを使用する他のユーザーとコードを共有する場合は、次の 3 つの形式のいずれかの形式で格納された日付と時刻を使用しなければならない場合があります。

  • 日付文字列 — 文字ベクトル。

    Example:  Thursday, August 23, 2012  9:45:44.946 AM
  • 日付ベクトル — 1 行 6 列の数値ベクトル。年、月、日、時、分、秒を含みます。

    Example:  [2012   8    23    9    45    44.946]
    
  • シリアル日付値 — 先発 ISO 暦の 0000 年 1 月 0 日以降の日数に等しい単一の数。シリアル日付値は datetime または duration データ型を受け付けない MATLAB 関数への入力として使用できます。

    Example:  7.3510e+005

日付文字列、ベクトル、数値は値の配列として保存できます。複数の日付文字列は文字ベクトルの cell 配列、複数の日付ベクトルは m 行 6 列の行列、複数のシリアル日付値は行列に保存します。

これらの形式はいずれも、関数 datetime を使用して datetime 配列に変換できます。既存の MATLAB コードで、シリアル日付値または日付ベクトルを想定している場合は、それぞれ関数 datenum または datevec を使用して、配列 datetime を想定されるデータ形式に変換します。配列 datetime を文字ベクトルに変換するには、関数 char または関数 cellstr を使用します。

R2016b 以降では、関数 string を使用して配列 datetime を string 配列に変換することもできます。

datetime と文字ベクトルの間の変換

日付文字列には、特定の日付および時刻に関するフィールドで構成された文字ベクトルが使用できます。日付と時刻をテキスト形式で表す方法はいくつかあります。たとえば、以下のすべてが 2010 年 8 月 23 日午後 4 時 35 分 42 秒を表す文字ベクトルです。

'23-Aug-2010 04:35:06 PM' 'Wednesday, August 23' '08/23/10 16:35' 'Aug 23 16:35:42.946'

日付文字列には次のように、ハイフン、スペース、コロンなどのフィールドを区切る文字が含まれます。

d = '23-Aug-2010 16:35:42'	

関数 datetime を使用して、1 つ以上の日付文字列を datetime 配列に変換します。最良のパフォーマンスを得るには、入力の日付文字列の形式を datetime への入力として指定します。

メモ

datetime が date および time 形式を記述するために使用する指定子は、関数 datestrdatevec および datenum が受け入れる指定子とは異なります。

t = datetime(d,'InputFormat','dd-MMM-yyyy HH:mm:ss')
t = datetime 23-Aug-2010 16:35:42

日付文字列 d および datetime スカラー t は似ていますが、等しくありません。各変数のサイズとデータ型を表示します。

whos d t
  Name      Size            Bytes  Class       Attributes

  d         1x20               40  char                  
  t         1x1                17  datetime              

配列 datetime を文字ベクトルに変換するには、char または cellstr を使用します。たとえば、現在の日付と時刻をタイムスタンプに変換してファイル名に追加します。

t = datetime('now','Format','yyyy-MM-dd''T''HHmmss')
t = 

  datetime

   2017-01-03T151105
S = char(t);
filename = ['myTest_',S]
filename =

    'myTest_2017-01-03T151105'

datetime と string 配列の間の変換

R2016b 以降では、関数 string を使用して string 配列を作成できます。string 配列に日付文字列が含まれる場合、関数 datetime を使用して、string 配列を datetime 配列に変換できます。同様に、関数 string を使用して、datetime 配列を string 配列に変換できます。

string 配列を変換します。MATLAB では、string が二重引用符で囲んで表示されます。最良のパフォーマンスを得るには、入力の日付文字列の形式を datetime への入力として指定します。

str = string({'24-Oct-2016 11:58:17'; '19-Nov-2016 09:36:29'; '12-Dec-2016 10:09:06'})
str = 3×1 string array "24-Oct-2016 11:58:17" "19-Nov-2016 09:36:29" "12-Dec-2016 10:09:06"
t = datetime(str,'InputFormat','dd-MMM-yyyy HH:mm:ss')
t = 3×1 datetime array 24-Oct-2016 11:58:17 19-Nov-2016 09:36:29 12-Dec-2016 10:09:06

datetime 値を string に変換します。

t = datetime('25-Dec-2016 06:12:34'); str = string(t)
str = "25-Dec-2016 06:12:34"

Datetime と日付ベクトルの間の変換

日付ベクトルは倍精度数から構成される 1 行 6 列のベクトルです。日付ベクトルの要素は、秒の要素を除き、すべて整数値です。秒の要素は非整数の場合もあります。時刻値は、24 時間制で表記されます。午前や午後の設定はありません。

日付ベクトルは、以下の順に並べられます。

year month day hour minute second

以下の日付ベクトルは、2012 年 10 月 24 日午前 10 時 45 分 7 秒を表しています。

[2012  10  24  10  45  07]

関数 datetime を使用して、1 つ以上の日付ベクトルを datetime 配列に変換します。

t = datetime([2012  10  24  10  45  07])
t = datetime 24-Oct-2012 10:45:07

datevec を使用して datetime 値の成分を抽出する代わりに、yearmonthday などの関数を使います。

y = year(t)
y =

        2012

または、たとえば年の値の場合は t.Year などを使用して、対応するプロパティにアクセスします。

y = t.Year
y =

        2012

シリアル日付値から datetime への変換

シリアル日付値は、固定基準日付からの経過日数としてカレンダー日付を表現します。MATLAB では、シリアル日付値 1 は西暦 0000 年 1 月 1 日です。

シリアル時間を使用して、午前 0 時からの経過日数を小数として表すこともできます。たとえば、午後 6 時は 0.75 シリアル日数に相当します。そのため、MATLAB 内の文字ベクトル '31-Oct-2003, 6:00 PM' は日付値 731885.75 となります。

関数 datetime を使用して、1 つ以上のシリアル日付値を datetime 配列に変換します。変換される日付値の型を次のように指定します。

t = datetime(731885.75,'ConvertFrom','datenum')
t = datetime 31-Oct-2003 18:00:00

datetime 配列の数値への変換

一部の MATLAB 関数は、入力として数値データ型を受け付けますが datetime 値は受け付けません。これらの関数を date および time データに適用するには、datetime 値を意味のある数値に変換します。次に、関数を呼び出します。たとえば、関数 logdouble を入力として受け付けますが、datetime は受け付けません。研究または実験の期間にまたがる日付の datetime 配列があるとします。

t = datetime(2014,6,18) + calmonths(1:4)
t = 1×4 datetime array 18-Jul-2014 18-Aug-2014 18-Sep-2014 18-Oct-2014

起点の値を減算します。たとえば、起点の値が実験の開始日であるとします。

dt = t - datetime(2014,7,1)
dt = 

  1×4 duration array

    408:00:00   1152:00:00   1896:00:00   2616:00:00

dtduration 配列です。関数 yearsdayshoursminutes または seconds を使用して、それぞれ年、日、時、分または秒の単位で dtdouble 配列に変換します。

x = hours(dt)
x =

         408        1152        1896        2616

double 配列を関数 log への入力として渡します。

y = log(x)
y =

    6.0113    7.0493    7.5475    7.8694

参考

| | | |

関連するトピック