GoLang Time 的加与减操作

需求

获取前一天的日期,并格式化成[2020-03-01]

思路:直接取出当前的年月月,然后格式化,参考代码

n:=time.Now()
ts:= fmt.Sprintf("%v-%v-%v", n.Year(), n.Month(), n.Day - 1)

以上代码输出结果为:[ 2020-March-12 ] 不符合预期

方案1:直接根据GoLang中的日期格式化来实现

ts:= fmt.Sprintf("%v-%v-%v", n.Year(), n.Format("01"), n.Day - 1)

方案2:通过日期加减

oneDayBefore:=time.ParseDuration("-24h") # 减掉24个小时,为前一天的日期
yesterday := n.Add(oneDayBefore) # 加一个负数 <=> 减

扩展 : 两个日期的时间差

n:=time.Now()
oneHourAgo := time.ParseDuration("-1h")
oneHourAgoTime := n.add(oneHourAgo) # 转换为 Time 类型
r := n.Sub(oneHoueAgoTime) # 得到结果