① time.Parse时区问题
tt, _ := time.Parse("2006-01-02 15:04:05", "2024-07-29 00:00:00")
curT := time.Now()
fmt.Println(curT)
fmt.Println(tt)
fmt.Println(tt.Unix())
fmt.Println(curT.Unix())
// 输出
2024-07-29 09:23:53.350477 +0800 CST m=+0.017764878
2024-07-29 00:00:00 +0000 UTC
1722211200
1722216233
time.Parse输出是UTC时间,比预期的多了8个小时。
解决:使用time.ParseInLocation,指定时区
例:time.ParseInLocation("2006-01-02 15:04:05", "2024-07-29 00:00:00", time.Local)
② 四舍五入问题
//保留2位小数
例如 num = 1.075
strconv.FormatFloat(num, 'f', 2, 64) 返回1.07
//遵循“偶数舍入”规则(银行家舍入),当小数部分正好是5时,它会舍入到最接近的偶数
fmt.Sprintf("%.2f", num) 返回1.07
解决:
1)使用math.Round
2)如果是decimal,直接Round解决