3月29日と書いて有るが前の月よりも長いときで且つ前の月にない日付のときに AddDate で -1ヶ月するときの挙動についてである.
-1ヶ月してないときは月初に丸められるっぽい.

package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println(time.Date(2022, 3, 1, 0, 0, 0, 0, time.UTC).AddDate(0, -1, 0))
	// 2022-02-01 00:00:00 +0000 UTC
	fmt.Println(time.Date(2022, 3, 29, 0, 0, 0, 0, time.UTC).AddDate(0, -1, 0))
	// 2022-03-01 00:00:00 +0000 UTC
	fmt.Println(time.Date(2022, 12, 31, 0, 0, 0, 0, time.UTC).AddDate(0, -1, 0))
	// 2022-12-01 00:00:00 +0000 UTC
}