入力された文字列が時刻かどうかチェックする必要があり、実装しようと思ったが、なかなかうまくできず。
恥ずかしながら、結構苦戦したので忘れないように記録しておく。
目次
結論
func IsTime(target string) bool {
layout := "15:04"
_, err := time.Parse(layout, target)
return err == nil
}
実際試してみると、期待通りになった。意外だったのは24:00はfalseになること。
fmt.Println("16:20 ->", IsTime("16:20")) // 16:20 -> true
fmt.Println("23:59 ->", IsTime("23:59")) // 23:59 -> true
fmt.Println("24:00 ->", IsTime("24:00")) // 24:00 -> false
fmt.Println("0:00 ->", IsTime("0:00")) // 0:00 -> true
fmt.Println("00:00 ->", IsTime("00:00")) // 00:00 -> true
fmt.Println("16:20:30 ->", IsTime("16:20:30")) // 16:20:30 -> false
fmt.Println("0a:23 ->", IsTime("0a:23")) // 0a:23 -> false
余談
余談だけどChatGPTに聞いてみたよ。
Goで文字列が時刻かどうか判断する関数を教えてください。
以下に例を示します。
package main
import (
"fmt"
"time"
)
func main() {
str := "2023-05-19 10:30:00"
isTime := isTimeString(str)
fmt.Println(isTime)
}
func isTimeString(str string) bool {
_, err := time.Parse("2006-01-02 15:04:05", str)
return err == nil
}
一瞬で終わった…
コメント