줄리아에서 날짜 및 시간 관련 함수 사용하는 법
개요 1
Dates
는 날짜 및 시간과 관련된 함수를 모아놓은 모듈이다. 일반적인 프로그래밍은 물론이고 시계열에 관련된, 아니 관련 없더라도 많은 데이터를 다루는 데에 있어서 유용할 수밖에 없다1.
코드
전체코드
using Dates
오늘 = DateTime(2022,3,10)
typeof(오늘)
propertynames(오늘)
오늘.instant
myformat = DateFormat("d-m-y")
내일 = Date("11-3-2022", myformat)
Dates.dayname(내일)
일주일뒤까지 = 오늘:Day(1):DateTime(2022,3,17)
collect(일주일뒤까지)
Dates.Day(일주일뒤까지[end]) - Dates.Day(오늘)
DateTime
타입
julia> 오늘 = DateTime(2022,3,10)
2022-03-10T00:00:00
julia> typeof(오늘)
DateTime
가령 DateTime()
함수로 22년 3월 10일의 날짜를 위와 같이 오늘
에 할당했다면, 오늘
은 DateTime
이라는 타입을 가진다. DateTime
은 instant
라는 프로퍼티를 가지며, 밀리초로 환산된 수로써 시간을 기록하고 있다.
julia> propertynames(오늘)
(:instant,)
julia> 오늘.instant
Dates.UTInstant{Millisecond}(Millisecond(63782553600000))
포맷 DateFormat()
julia> myformat = DateFormat("d-m-y")
dateformat"d-m-y"
julia> 내일 = Date("11-3-2022", myformat)
2022-03-11
흔히 동서양의 차이 때문에 날짜가 다르게 적힐 때 쓰인다.
요일 Dates.dayname()
julia> Dates.dayname(내일)
"Friday"
해당 날짜의 요일을 리턴해준다. 양력의 부조리함 때문에 의외로 내가 짜려면 어려운 함수가 이런 것들이다.
날짜의 벡터
julia> 일주일뒤까지 = 오늘:Day(1):DateTime(2022,3,17)
DateTime("2022-03-10T00:00:00"):Day(1):DateTime("2022-03-17T00:00:00")
julia> collect(일주일뒤까지)
8-element Vector{DateTime}:
2022-03-10T00:00:00
2022-03-11T00:00:00
2022-03-12T00:00:00
2022-03-13T00:00:00
2022-03-14T00:00:00
2022-03-15T00:00:00
2022-03-16T00:00:00
2022-03-17T00:00:00
줄리아 날짜 패키지에서 가장 유용한 부분이다. 특정 시점 사이의 구간을 위와 같이 네이티브한 줄리아 문법 그대로 벡터화하면 정말 상상하던대로의 결과가 나온다. 짜기 어려운 건 둘째치고 같은 기능을 하는 함수 정도는 다른 언어에도 있을지 모르겠지만, 이정도로 문법에 잘 녹아들어서 뛰어난 직관성을 가지는 경우는 흔치 않을 것이다.
날짜의 뺄셈 -
julia> Dates.Day(일주일뒤까지[end]) - Dates.Day(오늘)
7 days
당연하다는 듯이 뺄셈으로 두 시점의 간격을 계산할 수 있다. Dates.canonicalize()
를 사용하면 시,분,초 단위로 예쁘게 출력할 수 있다.
환경
- OS: Windows
- julia: v1.7.0