2
0

More than 3 years have passed since last update.

30時間制の時間表現を扱うパッケージを作った

Last updated at Posted at 2020-08-23

どうして?

テレビやラジオのタイムスケジュールを見ると、25:00のような表現を目にすることがありますよね。
ラジオ番組を日常的に聴取していると、"木曜1:00"という表現よりは、"水曜25:00"という表現の方がしっくりくるのですが、これを感覚的に使えるパッケージが見当たらなかったので、作ることにしました。
そもそも、この表現方法の名前が分からなかったので、ここでは仮に30時間制としています。(28時間制とか30時間制とか、いくつかありそうです)

30時間制の説明.png

やったこと

timeパッケージを拡張してtimeextパッケージを作りました。
0:00:00-05:59:59間の時刻を30時間制に置き換えます。
https://github.com/bluemon0919/go-timeext

用意した機能はParseFormatです。

timeパッケージの機能との差分は?

timeextパッケージは0:00:00-05:59:59間の時刻を30時間制に置き換えますが、それ以外の時刻についてはtimeパッケージと同じ動作をします。

使い方

時刻を表す文字列をtime.Time型のデータにパースする

例えば2020.07.12 25:00:00という時刻をパースしたい場合、次のように呼び出すことでtime.Time型のデータを取得します。
この時刻データは2020.07.13 01:00:00と同値になります。

const Layout string = "2006.01.02 15:04:05"

parsed, _ := timeext.Parse(Layout, "2020.07.12 25:00:00")
f := time.Time(parsed).Format(Layout)
fmt.Println(f) // 2020.07.13 01:00:00

time.Time型のデータから30時間制の文字列を取得する

逆に2020.07.13 01:00:00を30時間制の時刻として取得したい場合、次のコードで文字列を取得できます。

const Layout string = "2006.01.02 15:04:05"

parsed, _ := time.Parse(Layout, "2020.07.13 01:00:00")
f := timeext.TimeExt(parsed).Format(Layout)
fmt.Println(f) // 2020.07.12 25:00:00

2
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
2
0