19日に更新してた

アフィリエイトはないよ

【golang】time.ParseInLocation で"午前"、"午後"が入っている時刻の扱い

golang の time.ParseInLocation で "2006年1月2日午後15時4分" をフォーマットに使って変換しようとしても、午前午後が異なるとエラーでうまく変換されませんでした。

仕方がないので、入力の午前、午後を AM, PM に置換して、フォーマット部分を "2006年1月2日PM15時4分" にしたら24時間法で出てきました。

func NihongoTimeParse(s string) {
	fmt.Print(s, " ")

	jst, _ := time.LoadLocation("Asia/Tokyo")
	s = strings.ReplaceAll(s, "午前", "AM")
	s = strings.ReplaceAll(s, "午後", "PM")
	c, _ := time.ParseInLocation("2006年1月2日PM15時4分", s, jst)

	fmt.Println(c)
}

func main() {
	NihongoTimeParse("2024年6月19日午前0時0分")
	NihongoTimeParse("2024年6月20日午後0時0分")
	NihongoTimeParse("2024年6月21日午前7時30分")
	NihongoTimeParse("2024年6月22日午後7時30分")
}

で結果がこんな感じになります。

2024年6月19日午前0時0分 2024-06-19 00:00:00 +0900 JST
2024年6月20日午後0時0分 2024-06-20 12:00:00 +0900 JST
2024年6月21日午前7時30分 2024-06-21 07:30:00 +0900 JST
2024年6月22日午後7時30分 2024-06-22 19:30:00 +0900 JST