ジュリアでの日付と時刻関連関数の使用方法
概要 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
当たり前のように、引き算で2つの時点の間隔を計算できる。Dates.canonicalize()
を使えば、時間、分、秒単位できれいに表示できる。
環境
- OS: Windows
- julia: v1.7.0