テキストと datetime 値または duration 値の間の変換
この例では、テキストと日付および時刻を表すデータ型の間で変換を行う方法を説明します。datetime データ型は 2020 年 8 月 24 日午前 10 時 50 分 30 秒などの時点を表し、duration データ型は 3 時間、47 分、16 秒などの時間の長さを表します。日付と時刻をテキストに変換する一般的な理由は、それらをプロット ラベルやファイル名として使用される string に追加することです。同様に、ファイルに日付と時刻をテキストとして格納するデータの列がある場合は、そのデータをこれらの列から datetime 配列または duration 配列に読み取ることができ、データが解析にさらに役立つようになります。
次のように変換してください。
datetime値またはduration値からテキストへは、関数stringを使用します。(関数charを使用して、これらの値を文字ベクトルに変換することもできます。)テキストから
datetime値へは、関数datetimeを使用します。テキストから
duration値へは、関数durationを使用します。
また、関数 readcell、readvars、readtable などの一部の関数は、ファイルからテキストを読み取って、日付と時刻を表すテキストを datetime 配列または duration 配列に自動的に変換します。
datetime 値と duration 値からテキストへの変換
現在の日付と時刻を表す datetime 値を作成します。
d = datetime("now")d = datetime
13-Jul-2025 18:32:57
d をテキストに変換するには、関数 string を使用します。
str = string(d)
str = "13-Jul-2025 18:32:57"
同様に、duration 値を変換できます。たとえば、まず 3 時間と 30 分を表す duration 値を作成します。この値を作成する 1 つの方法は、関数 hours と関数 minutes を使用することです。これらの関数は、結合できる duration 値を作成します。
d = hours(3) + minutes(30)
d = duration
3.5 hr
d をテキストに変換します。
str = string(d)
str = "3.5 hr"
このような string の一般的な用途の 1 つに、プロット ラベルやファイル名への追加があります。たとえば、今日の日付を含むタイトルをもつ簡単なプロットを作成します。まず、日付を変換して string myTitle に追加します。
d = datetime("today")d = datetime
13-Jul-2025
myTitle = "Plot generated on: " + string(d)myTitle = "Plot generated on: 13-Jul-2025"
そのタイトルをもつプロットを作成します。
plot(rand(10,1)) title(myTitle)

配列から string 配列への変換
datetime 値または duration 値の配列も変換できます。関数 string を使用して変換すると、結果として得られる string 配列は同じサイズになります。
たとえば、datetime 配列を作成します。
D = datetime(2021,1:3,15,12,0,0)'
D = 3×1 datetime
15-Jan-2021 12:00:00
15-Feb-2021 12:00:00
15-Mar-2021 12:00:00
D を string 配列に変換します。
str = string(D)
str = 3×1 string
"15-Jan-2021 12:00:00"
"15-Feb-2021 12:00:00"
"15-Mar-2021 12:00:00"
同様に、duration 配列を作成して変換します。duration 配列を作成する 1 つの方法は、関数 duration を使用することです。時間、分、秒を指定する数値入力で呼び出します。
D = duration(1:3,30,0)'
D = 3×1 duration
01:30:00
02:30:00
03:30:00
duration 配列を変換します。
str = string(D)
str = 3×1 string
"01:30:00"
"02:30:00"
"03:30:00"
出力テキストの形式の指定
datetime と duration のデータ型には、表示形式を指定するプロパティがあります。ライブ スクリプトとコマンド ウィンドウでは、その形式を使用して値が表示されます。関数 string を使用して datetime 配列または duration 配列を変換する際に、別の形式を指定できます。
たとえば、datetime 値を作成して表示します。
d = datetime("now")d = datetime
13-Jul-2025 18:32:59
月、日、年、時刻の完全名を表す文字識別子を使用して形式を指定します。d を、その形式を使用して日付と時刻を表す string に変換します。
fmt = "dd MMMM yyyy, hh:mm:ss a";
str = string(d,fmt)str = "13 July 2025, 06:32:59 PM"
同様に、duration 配列を変換する際に形式を指定できます。まず、duration 値を作成します。
d = hours(1) + minutes(30) + seconds(45)
d = duration
1.5125 hr
時間、分、秒を表す識別子 hh:mm:ss を使用して、d を string に変換します。
fmt = "hh:mm:ss";
string(d,fmt)ans = "01:30:45"
メモ: 関数 string では、他のデータ型を変換する場合、2 番目の形式の入力引数は提供されません。
出力テキストのロケールの指定
異なるロケールを使用した datetime 配列と duration 配列の変換もできます。ロケールには、日と月を表す適切な名前があります。既定のロケール以外のロケールを使用するには、それを別の入力引数として指定します。
たとえば、ロケールとして fr_FR を指定し、フランス語の月名を使用して現在の日付と時刻を表します。
d = datetime("now")d = datetime
13-Jul-2025 18:32:59
fmt = "dd MMMM yyyy, hh:mm:ss a"; locale = "fr_FR"; str = string(d,fmt,locale)
str = "13 juillet 2025, 06:32:59 PM"
同様に、duration 配列を変換する際にロケールを指定できます。フランス語のロケールでは、時間について異なる略語が使用されます。
d = hours(5)
d = duration
5 hr
fmt = "h"; locale = "fr_FR"; str = string(d,fmt,locale)
str = "5 h"
メモ: 関数 string では、他のデータ型を変換する場合、3 番目のロケールの入力引数は提供されません。
テキストから datetime 値への変換
テキストで、日付と時刻が関数 datetime によって認識される形式で指定されている場合は、そのテキストを datetime 値に変換できます。
日付と時刻を表す string を作成します。
str = "2021-09-15 09:12:34"str = "2021-09-15 09:12:34"
str を datetime 値に変換します。
d = datetime(str)
d = datetime
15-Sep-2021 09:12:34
入力テキストの形式の解釈
関数 datetime は、一般的に使用される多くのテキスト形式を認識します。ただし、テキストが datetime で認識されない形式の場合は、入力引数として形式を指定できます。
たとえば、ISO 8601 規格を使用して日付と時刻を指定する string を作成します。
str = "2021-09-15T091234"str = "2021-09-15T091234"
関数 datetime はこの形式を認識しません。この string を datetime 値に変換するには、入力テキストの形式を指定します。次に、関数 datetime を呼び出します。(形式にリテラル テキストが含まれる場合は、引用符で囲みます。この例では、リテラル テキスト T を 'T' と指定します。)
infmt = "yyyy-MM-dd'T'HHmmss"; d = datetime(str,"InputFormat",infmt)
d = datetime
15-Sep-2021 09:12:34
テキストから duration 値への変換
テキストで、時間が関数 duration によって認識される形式で指定されている場合は、そのテキストを duration 値に変換できます。
時間の長さを表す string を作成します。
str = "00:34:01"str = "00:34:01"
str を duration 値に変換します。
d = duration(str)
d = duration
00:34:01
入力テキストの形式の解釈
関数 duration は、コロンで区切られた日数、時間数、分数、秒数を指定する形式を認識します。このような形式は次のとおりです。
"dd:hh:mm:ss""hh:mm:ss""mm:ss""hh:mm"最大 9 個の文字
Sで秒の小数部を示す、最初から 3 つの形式のいずれか ("hh:mm:ss.SSSS"など)
入力テキストがあいまいな場合、つまり "mm:ss" 形式または "hh:mm" 形式と一致すると解釈される可能性がある場合は、入力引数として形式を指定します。
たとえば、時間の長さを表す string を作成します。
str = "34:01"str = "34:01"
この string を 34 分 1 秒の duration に変換するには、形式を指定します。次に、関数 duration を呼び出します。
infmt = "mm:ss"; d = duration(str,"InputFormat",infmt)
d = duration
00:34:01
ファイルからの日付と時刻の読み取り
スプレッドシートやテキスト ファイルなどの多くのファイルでは、日付と時刻がテキストとして保存されます。日付と時刻が認識される形式の場合、readcell、readvars、readtable などの関数は、それらを読み取って datetime 配列または duration 配列に自動的に変換できます。
たとえば、CSV ファイル outages.csv は、MATLAB® に同梱されているサンプル ファイルです。このファイルには一連の停電のデータが含まれています。outages.csv の最初の行は列名です。ファイルの残りは、停電ごとのコンマ区切りのデータ値です。このファイルには 1468 行のデータが含まれています。最初の数行を以下に示します。
Region,OutageTime,Loss,Customers,RestorationTime,Cause SouthWest,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,winter storm SouthEast,2003-01-23 00:49,530.1399497,212035.3001,,winter storm SouthEast,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,winter storm West,2004-04-06 05:44,434.8053524,340371.0338,2004-04-06 06:10,equipment fault MidWest,2002-03-16 06:18,186.4367788,212754.055,2002-03-18 23:23,severe storm ...
outages.csv から最初の 3 列を読み取って配列に直接格納するには、関数 readvars を使用します。テキストを string 配列が格納される変数に読み取るには、名前と値の引数 TextType を指定します。ただし、この関数は CSV ファイルの 2 列目の値を日付と時刻として認識し、変数 OutageTime を datetime 配列として作成します。各出力配列の最初の 5 行を表示します。
[Region,OutageTime,Loss] = readvars("outages.csv","TextType","string"); whos Region OutageTime Loss
Name Size Bytes Class Attributes Loss 1468x1 11744 double OutageTime 1468x1 23520 datetime Region 1468x1 83272 string
Loss(1:5)
ans = 5×1
458.9772
530.1399
289.4035
434.8054
186.4368
OutageTime(1:5)
ans = 5×1 datetime
2002-02-01 12:18
2003-01-23 00:49
2003-02-07 21:15
2004-04-06 05:44
2002-03-16 06:18
Region(1:5)
ans = 5×1 string
"SouthWest"
"SouthEast"
"SouthEast"
"West"
"MidWest"
スプレッドシート全体を読み取ってデータを table に格納するには、関数 readtable を使用します。テキストを string 配列が格納される table 変数に読み取るには、名前と値の引数 TextType を指定します。ただし、readtable は、OutageTime と RestorationTime を datetime 配列が格納される table 変数に変換します。
T = readtable("outages.csv","TextType","string")
T=1468×6 table
Region OutageTime Loss Customers RestorationTime Cause
___________ ________________ ______ __________ ________________ _________________
"SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 "winter storm"
"SouthEast" 2003-01-23 00:49 530.14 2.1204e+05 NaT "winter storm"
"SouthEast" 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 "winter storm"
"West" 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault"
"MidWest" 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 "severe storm"
"West" 2003-06-18 02:49 0 0 2003-06-18 10:54 "attack"
"West" 2004-06-20 14:39 231.29 NaN 2004-06-20 19:16 "equipment fault"
"West" 2002-06-06 19:28 311.86 NaN 2002-06-07 00:51 "equipment fault"
"NorthEast" 2003-07-16 16:23 239.93 49434 2003-07-17 01:12 "fire"
"MidWest" 2004-09-27 11:09 286.72 66104 2004-09-27 16:37 "equipment fault"
"SouthEast" 2004-09-05 17:48 73.387 36073 2004-09-05 20:46 "equipment fault"
"West" 2004-05-21 21:45 159.99 NaN 2004-05-22 04:23 "equipment fault"
"SouthEast" 2002-09-01 18:22 95.917 36759 2002-09-01 19:12 "severe storm"
"SouthEast" 2003-09-27 07:32 NaN 3.5517e+05 2003-10-04 07:02 "severe storm"
"West" 2003-11-12 06:12 254.09 9.2429e+05 2003-11-17 02:04 "winter storm"
"NorthEast" 2004-09-18 05:54 0 0 NaT "equipment fault"
⋮
これらの table 変数は datetime 配列であるため、これらを使用して便利な計算を実行できます。たとえば、停電の継続期間を計算して table に duration 配列として付加できます。
T.OutageDuration = T.RestorationTime - T.OutageTime
T=1468×7 table
Region OutageTime Loss Customers RestorationTime Cause OutageDuration
___________ ________________ ______ __________ ________________ _________________ ______________
"SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 "winter storm" 148:32:00
"SouthEast" 2003-01-23 00:49 530.14 2.1204e+05 NaT "winter storm" NaN
"SouthEast" 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 "winter storm" 226:59:00
"West" 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault" 00:26:00
"MidWest" 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 "severe storm" 65:05:00
"West" 2003-06-18 02:49 0 0 2003-06-18 10:54 "attack" 08:05:00
"West" 2004-06-20 14:39 231.29 NaN 2004-06-20 19:16 "equipment fault" 04:37:00
"West" 2002-06-06 19:28 311.86 NaN 2002-06-07 00:51 "equipment fault" 05:23:00
"NorthEast" 2003-07-16 16:23 239.93 49434 2003-07-17 01:12 "fire" 08:49:00
"MidWest" 2004-09-27 11:09 286.72 66104 2004-09-27 16:37 "equipment fault" 05:28:00
"SouthEast" 2004-09-05 17:48 73.387 36073 2004-09-05 20:46 "equipment fault" 02:58:00
"West" 2004-05-21 21:45 159.99 NaN 2004-05-22 04:23 "equipment fault" 06:38:00
"SouthEast" 2002-09-01 18:22 95.917 36759 2002-09-01 19:12 "severe storm" 00:50:00
"SouthEast" 2003-09-27 07:32 NaN 3.5517e+05 2003-10-04 07:02 "severe storm" 167:30:00
"West" 2003-11-12 06:12 254.09 9.2429e+05 2003-11-17 02:04 "winter storm" 115:52:00
"NorthEast" 2004-09-18 05:54 0 0 NaT "equipment fault" NaN
⋮
参考
char | string | duration | datetime | hours | minutes | seconds | readcell | readvars | readtable | readtimetable | table | timetable
トピック
- MATLAB での日付と時刻の表現
- 日付と時刻のシーケンスの生成
- datetime 配列の日付と時刻の成分の抽出または割り当て
- 日付と時刻の比較
- 日付と時刻の算術演算
- 日付と時刻のユリウス日または POSIX 時間への変換