我有两个时间实例。have我从数据库和Now()时间中获取。一旦我想用 比较它们After,结果就不是我所期望的。实例如下:// have => 2022-01-09 09:09:59 +0000 +0000// now => 2022-01-09 11:57:08.990265878 +0300 +0300 m=+4.977355713 if now.After(have) { // ...}我期望true上述条件的结果,而它返回false。为了更好地解决这个问题,我将它们转换为 Unix 时间,Unix()令人惊讶的是,它的值have略大于now,这就是条件返回的原因false。显然now是 afterhave但它的 Unix 时间小于have. 由于我想知道此案,请您告诉我我错在哪里?更新 问题与时区有关。我没有注意到它。所以我添加了以下代码:loc, _ := time.LoadLocation("Local") have = have.In(loc)然后一旦我打印出来,它是这样的:have => 2022-01-09 12:09:59 +0300 +0300这就是条件返回错误的原因。
1 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
这两个时间位于不同的时区:have
在 UTC 中,now
在+0300
. now
因此,在将其与其他时间进行比较之前,您必须从值的日期/时间部分中减去 3 小时。
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消