MENU

Go言語で文字列が時刻かどうか判定したい

入力された文字列が時刻かどうかチェックする必要があり、実装しようと思ったが、なかなかうまくできず。

恥ずかしながら、結構苦戦したので忘れないように記録しておく。

目次

結論

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で文字列が時刻かどうか判断する関数を教えてください。

ChatGPT

以下に例を示します。

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
}

一瞬で終わった…

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次