LoginSignup
0
0

More than 3 years have passed since last update.

Gravio 4の日付フォーマットはGo言語の形式を使う

Posted at

Gravio 4のマッピングで、日付をフォーマットしたい時は DateFormat という関数を使う。

デフォルトのフォーマット

例えば、LINEにセンサーからデータ取得したい日付を送る場合、そのままだとデフォルトのフォーマットで送信される。

image.png

cp.Message
tv.Timestamp

結果はこう。Web APIなんかにJSONで投げるときはだいたいこのままでもいいですが、LINEやSlackに投げるときには味気ない。
image.png

任意のフォーマットに変換する

そういうときに DateFormatを使います。

cp.Message
DateFormat(tv.Timestamp, "2006年1月2日 15時04分05秒にデータを受信しました")

image.png

DateFormatの詳細は、ヘルプの中に書かれてますが、次のように引数を渡します。

DateFormat(t, layout)
引数 内容
t 日付型のデータ
layout Go言語形式のレイアウト

Go言語形式の日時フォーマット

これがちょっと曲者。他の言語のように、YだのHHだので指定しない。サンプル日付みたいなものを使って表現します。
かなり雑な覚え方で、正確性に欠くかもしれないですが、次のように覚えておくといいと思います。

単位
2006年 2006,06
1月 1, 01, Jan, January
2日 2, 02, _2
午後3時 3, 03, 15
午前/午後 PM pm, PM
4分 4, 04
5秒 5, 05
秒以下(最後の桁の0は省略) .9 .999, .999999
秒以下(桁数分0で補完) .0 .000, .0000000
タイムゾーン MST,UTC-7時間 MST, -0700, Z07:00
曜日 月曜日 Mon, Monday

詳しくはGo言語のtimeパッケージのヘルプformatのソースコードを見てください。

スニペット

一般的な時刻表記

一般的な時刻
DateFormat(tv.Timestamp, "2006/1/2 15:04:05.000")

image.png

日本語の時刻

日本語の時刻単位を付ける場合はそのままフォーマットの中に書けばいいです。

日本語の時刻
DateFormat(tv.Timestamp, "2006年1月2日 15時04分05秒.000 (タイムゾーン MST)")

image.png

午前・午後表記にするには、15のところをPM03とします。

日本語の時刻(AM/PM)
DateFormat(tv.Timestamp, "2006年1月2日 PM03時04分05秒.000 (タイムゾーン MST)")

image.png

ISO8601形式

あまり最近は使われてないかもしれないですが、ISO8601形式も。
月や日などを二桁にするには 01のように 0を付加します。

IS8601
DateFormat(tv.Timestamp, "20060102T150405-0700")

image.png

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0