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