텍스트와 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
25-Jan-2024 22:03:24
d
를 텍스트로 변환하려면 string
함수를 사용합니다.
str = string(d)
str = "25-Jan-2024 22:03:24"
이와 유사하게 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
25-Jan-2024
myTitle = "Plot generated on: " + string(d)
myTitle = "Plot generated on: 25-Jan-2024"
제목이 있는 플롯을 만듭니다.
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
25-Jan-2024 22:03:28
월, 일, 년, 시간의 전체 이름에 대한 문자 식별자를 사용하여 형식을 지정합니다. 이 형식을 사용하여 d
를 날짜와 시간을 나타내는 string형으로 변환합니다.
fmt = "dd MMMM yyyy, hh:mm:ss a";
str = string(d,fmt)
str = "25 January 2024, 10:03:28 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
25-Jan-2024 22:03:28
fmt = "dd MMMM yyyy, hh:mm:ss a"; locale = "fr_FR"; str = string(d,fmt,locale)
str = "25 janvier 2024, 10:03:28 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 23488 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 = 5x1 datetime
01-Feb-2002 12:18:00
23-Jan-2003 00:49:00
07-Feb-2003 21:15:00
06-Apr-2004 05:44:00
16-Mar-2002 06:18:00
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" 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 "winter storm"
"SouthEast" 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT "winter storm"
"SouthEast" 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 "winter storm"
"West" 06-Apr-2004 05:44:00 434.81 3.4037e+05 06-Apr-2004 06:10:00 "equipment fault"
"MidWest" 16-Mar-2002 06:18:00 186.44 2.1275e+05 18-Mar-2002 23:23:00 "severe storm"
"West" 18-Jun-2003 02:49:00 0 0 18-Jun-2003 10:54:00 "attack"
"West" 20-Jun-2004 14:39:00 231.29 NaN 20-Jun-2004 19:16:00 "equipment fault"
"West" 06-Jun-2002 19:28:00 311.86 NaN 07-Jun-2002 00:51:00 "equipment fault"
"NorthEast" 16-Jul-2003 16:23:00 239.93 49434 17-Jul-2003 01:12:00 "fire"
"MidWest" 27-Sep-2004 11:09:00 286.72 66104 27-Sep-2004 16:37:00 "equipment fault"
"SouthEast" 05-Sep-2004 17:48:00 73.387 36073 05-Sep-2004 20:46:00 "equipment fault"
"West" 21-May-2004 21:45:00 159.99 NaN 22-May-2004 04:23:00 "equipment fault"
"SouthEast" 01-Sep-2002 18:22:00 95.917 36759 01-Sep-2002 19:12:00 "severe storm"
"SouthEast" 27-Sep-2003 07:32:00 NaN 3.5517e+05 04-Oct-2003 07:02:00 "severe storm"
"West" 12-Nov-2003 06:12:00 254.09 9.2429e+05 17-Nov-2003 02:04:00 "winter storm"
"NorthEast" 18-Sep-2004 05:54:00 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" 01-Feb-2002 12:18:00 458.98 1.8202e+06 07-Feb-2002 16:50:00 "winter storm" 148:32:00
"SouthEast" 23-Jan-2003 00:49:00 530.14 2.1204e+05 NaT "winter storm" NaN
"SouthEast" 07-Feb-2003 21:15:00 289.4 1.4294e+05 17-Feb-2003 08:14:00 "winter storm" 226:59:00
"West" 06-Apr-2004 05:44:00 434.81 3.4037e+05 06-Apr-2004 06:10:00 "equipment fault" 00:26:00
"MidWest" 16-Mar-2002 06:18:00 186.44 2.1275e+05 18-Mar-2002 23:23:00 "severe storm" 65:05:00
"West" 18-Jun-2003 02:49:00 0 0 18-Jun-2003 10:54:00 "attack" 08:05:00
"West" 20-Jun-2004 14:39:00 231.29 NaN 20-Jun-2004 19:16:00 "equipment fault" 04:37:00
"West" 06-Jun-2002 19:28:00 311.86 NaN 07-Jun-2002 00:51:00 "equipment fault" 05:23:00
"NorthEast" 16-Jul-2003 16:23:00 239.93 49434 17-Jul-2003 01:12:00 "fire" 08:49:00
"MidWest" 27-Sep-2004 11:09:00 286.72 66104 27-Sep-2004 16:37:00 "equipment fault" 05:28:00
"SouthEast" 05-Sep-2004 17:48:00 73.387 36073 05-Sep-2004 20:46:00 "equipment fault" 02:58:00
"West" 21-May-2004 21:45:00 159.99 NaN 22-May-2004 04:23:00 "equipment fault" 06:38:00
"SouthEast" 01-Sep-2002 18:22:00 95.917 36759 01-Sep-2002 19:12:00 "severe storm" 00:50:00
"SouthEast" 27-Sep-2003 07:32:00 NaN 3.5517e+05 04-Oct-2003 07:02:00 "severe storm" 167:30:00
"West" 12-Nov-2003 06:12:00 254.09 9.2429e+05 17-Nov-2003 02:04:00 "winter storm" 115:52:00
"NorthEast" 18-Sep-2004 05:54:00 0 0 NaT "equipment fault" NaN
⋮
참고 항목
char
| string
| duration
| datetime
| hours
| minutes
| seconds
| readcell
| readvars
| readtable
| readtimetable
| table
| timetable
관련 항목
- MATLAB에서 날짜/시간 표시하기
- 날짜/시간 시퀀스 생성하기
- datetime형 배열의 날짜/시간 성분 추출 또는 할당하기
- 날짜/시간 비교하기
- 날짜/시간 산술 연산
- 날짜/시간을 율리우스 적일 또는 POSIX 시간으로 변환하기