텍스트와 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
16-Feb-2023 15:14:27
d
를 텍스트로 변환하려면 string
함수를 사용합니다.
str = string(d)
str = "16-Feb-2023 15:14:27"
이와 유사하게 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
16-Feb-2023
myTitle = "Plot generated on: " + string(d)
myTitle = "Plot generated on: 16-Feb-2023"
제목이 있는 플롯을 만듭니다.
plot(rand(10,1)) title(myTitle)
배열을 string형 배열로 변환하기
datetime
형 값 또는 duration
형 값으로 구성된 배열을 변환할 수도 있습니다. string
함수를 사용하여 배열을 변환하면 결과로 생성되는 string형 배열은 크기가 동일합니다.
예를 들어, datetime
형 배열을 만들어 보겠습니다.
D = datetime(2021,1:3,15,12,0,0)'
D = 3x1 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 = 3x1 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 = 3x1 duration
01:30:00
02:30:00
03:30:00
duration
형 배열을 변환합니다.
str = string(D)
str = 3x1 string
"01:30:00"
"02:30:00"
"03:30:00"
출력 텍스트의 형식 지정하기
datetime
데이터형과 duration
데이터형에는 표시 형식을 지정하는 속성이 있습니다. 라이브 스크립트와 명령 창은 이 형식을 사용하여 값을 표시합니다. string
함수를 사용하여 datetime
형 배열 또는 duration
형 배열을 변환하는 경우 다른 형식을 지정할 수 있습니다.
예를 들어, datetime
형 값을 만들고 표시해 보겠습니다.
d = datetime("now")
d = datetime
16-Feb-2023 15:14:30
월, 일, 년, 시간의 전체 이름에 대한 문자 식별자를 사용하여 형식을 지정합니다. 이 형식을 사용하여 d
를 날짜와 시간을 나타내는 string형으로 변환합니다.
fmt = "dd MMMM yyyy, hh:mm:ss a";
str = string(d,fmt)
str = "16 February 2023, 03:14:30 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
16-Feb-2023 15:14:30
fmt = "dd MMMM yyyy, hh:mm:ss a"; locale = "fr_FR"; str = string(d,fmt,locale)
str = "16 février 2023, 03:14:30 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 83256 string
Loss(1:5)
ans = 5×1
458.9772
530.1399
289.4035
434.8054
186.4368
OutageTime(1:5)
ans = 5x1 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 = 5x1 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 시간으로 변환하기