- now: 현재 시간을 serial date number로 반환
- 이 때 local time을 반환하지만 timezone은 설정되지 않음.
- datetime(serial_date_number, 'ConvertFrom', 'datenum')
- serial date number를 datetime type으로 변환
- 위의 명령어를 실행하면 TimeZone 설정이 안되어 있음.
- time1 = datetime("now", "TimeZone", "America/New_York")
- 현재 뉴욕 시간을 반환
- time1.TimeZone = 'Asia/Seoul'
- 이전에 뉴욕 시간을 그대로 서울 시간으로 변경해서 반환
% Ex1
a = now
b = datetime(a, 'ConvertFrom', "datenum")
b.TimeZone
b.TimeZone = 'America/Chicago'
b.TimeZone = 'Asia/Seoul'
- Ex1에서 line 2의 시간이나 line 5의 시간이나 같음. 처음 datetime으로 b를 만들어주었을 때 timezone 설정이 안되어 있었기 때문에 line 5에서 timezone을 입력했을 때 시간 변환이 일어나지 않음.
- 그러나 line 6에서 새롭게 timezone을 입력해주면 시카고의 시간을 서울시간으로 변경시켜주면서 시간값이 바뀜.
- datetime type을 선언할 때, 이왕이면 timezone을 'Etc/UTC'로 설정해서 선언해주고 이후에 목적에 맞게 local time 지정하는게 정신건강에 좋음.
- timezones: matlab에서 사용가능한 timezone list를 반환
- 참고로 'UTC-5'와 같은 식으로도 timezone 설정이 가능하다.
- 그러나 daylight saving 적용 등에 취약하므로 지역이름 기준으로 timezone 설정해주는 것이 좋음.
- tzoffset: UTC와의 시간차이를 duration type으로 반환
- hours(tzoffset(datetime_variable))를 이용해 duration type을 바로 double type으로 반환
- datenum: datetime type을 serial date number (난 timestamp라고 부르는데 정식용어가 맞는지는..)로 반환
- datestr: datetime type을 char type으로 변환 (일반적인 글자 타입으로 변환)
% Ex2
time1 = datetime("now", "TimeZone","America/New_York")
time2 = time1;
time2.TimeZone = "America/Chicago"
time1_num = datenum(time1)
time2_num = datenum(time2)
(time2_num - time1_num) * 24 * 60
- serial date number와 datetime을 변환하는 경우가 자주 생긴다.
- serial date number는 그냥 double형 타입이기 때문에, 다른 언어에서 matlab으로 변수를 넘길 때 사용하기 편하다.
- 위의 예제에서 time1은 'now'를 이용해 '특정 시점'을 뉴욕시간으로 받아오고
- time2 역시 같은 그 '특정 시점'을 시카고 시간으로 받는다.
- 이 때 time1과 time2는 '특정 시점'을 공유하고 있으므로 이를 datenum을 통해 timestamp로 변환 시 같은 값을 가질 것이라고 생각하면 안됨!
- datenum을 통한 serial date number는 어떤 특정 시점 (0년 1월 0일)에서 '경과한 시간'을 말하기 때문에, '경과한 시간'이기 때문에 timezone 개념이 없다.
- 그래서 time1과 time2를 timestamp로 변환했을 때 시간이 서로 차이가 난다.
- 위의 경우 시카고와 뉴욕이 1시간 차이나므로 1시간 차이.
- 그래서 time1과 time2를 timestamp로 변환했을 때 시간이 서로 차이가 난다.
- serial date number에서 1은 하루를 뜻하므로 위에서 24*60해서 -60이라는 값, 즉 -60분 차이를 반환.
- serial date number가 datetime보다 크기도 덜 차지하고 다른 언어로 넘기기에 용이함.
- whos를 통해 크기를 비교해보면 3~5배 차이 남.
추가:
java.util.Date().getTimezoneOffset: 현재 시스템의 시간과 UTC의 offset을 minute단위로 보여줌
같이보면 좋음
'컴퓨터 Computer > Matlab' 카테고리의 다른 글
MATLAB, Python의 timestamp (0) | 2020.06.24 |
---|