텍스트와 datetime형 값 또는 duration형 값 간에 변환하기
이 예제에서는 날짜와 시간을 나타내는 텍스트와 데이터형 간에 변환하는 방법을 보여줍니다. datetime 데이터형은 특정 시점(예: 2020년 8월 24일, 오전 10시 50분 30초)을 나타내고 duration 데이터형은 시간의 길이(예: 3시간 47분 16초)를 나타냅니다. 날짜와 시간을 텍스트로 변환하는 일반적인 이유는 이를 플롯 레이블이나 파일 이름으로 사용되는 문자열에 추가하기 위해서입니다. 이와 유사하게 날짜와 시간을 텍스트로 저장한 데이터 열이 파일에 있는 경우 그러한 열의 데이터를 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형 값을 만들어 보겠습니다. 이 값을 생성하려면 hours 함수와 minutes 함수를 사용하는 방법이 있습니다. 이러한 함수는 나중에 결합할 수 있는 duration형 값을 만듭니다.
d = hours(3) + minutes(30)
d = duration
3.5 hr
d를 텍스트로 변환합니다.
str = string(d)
str = "3.5 hr"
이러한 문자열은 흔히 플롯 레이블이나 파일 이름에 추가하는 데 사용됩니다. 예를 들어, 오늘의 날짜가 포함된 제목이 있는 간단한 플롯을 만들어 보겠습니다. 먼저 날짜를 변환하고 이를 문자열 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형 배열을 생성하려면 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 함수는 다른 데이터형을 변환할 경우 형식에 대한 두 번째 입력 인수를 제공하지 않습니다.
출력 텍스트의 로캘 지정하기
다른 로캘을 사용하여 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 함수는 다른 데이터형을 변환할 때 로캘에 대한 세 번째 입력 인수를 제공하지 않습니다.
텍스트를 datetime형 값으로 변환하기
텍스트에서 datetime 함수가 인식하는 형식으로 날짜와 시간이 지정된 경우 텍스트를 datetime형 값으로 변환할 수 있습니다.
날짜와 시간을 나타내는 문자열을 생성합니다.
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 표준을 사용하여 날짜와 시간을 지정하는 문자열을 만들어 보겠습니다.
str = "2021-09-15T091234"str = "2021-09-15T091234"
datetime 함수는 이 형식을 인식하지 못합니다. 이 문자열을 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형 값으로 변환할 수 있습니다.
시간 길이를 나타내는 문자열을 생성합니다.
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"처음 세 개 형식에 소수 초(Fractional Second) 자릿수를 나타내기 위해 최대 9개의
S문자가 추가된 형식(예: "hh:mm:ss.SSSS")
입력 텍스트가 모호해서 "mm:ss" 형식이나 "hh:mm" 형식과 일치하는 것으로 해석될 가능성이 있는 경우 해당 형식을 입력 인수로 지정하십시오.
예를 들어, 시간 길이를 나타내는 문자열을 생성해 보겠습니다.
str = "34:01"str = "34:01"
이 문자열을 34분 1초라는 기간으로 변환하려면 해당 형식을 지정합니다. 그런 다음 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에서 처음 세 개의 열을 읽어오고 이를 배열에 직접 저장하려면 readvars 함수를 사용합니다. 텍스트를 string형 배열을 저장하는 변수로 읽어오려면 TextType 이름-값 인수를 지정합니다. 하지만 이 함수는 CSV 파일의 두 번째 열에 있는 값을 날짜와 시간으로 인식하고 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"
전체 스프레드시트를 읽어오고 데이터를 테이블에 저장하려면 readtable 함수를 사용합니다. 텍스트를 string형 배열을 저장하는 테이블 변수로 읽어오려면 TextType 이름-값 인수를 지정합니다. 하지만 readtable은 계속해서 OutageTime 및 RestorationTime을 datetime형 배열을 저장하는 테이블 변수로 변환합니다.
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"
⋮
이러한 테이블 변수가 datetime형 배열이므로 이를 사용하여 간편하게 계산을 수행할 수 있습니다. 예를 들어 정전이 지속된 시간을 계산하고 그 값을 테이블에 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 시간으로 변환하기