如何准确比较两个时间点?

我有两个时间实例。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

这就是条件返回错误的原因。


海绵宝宝撒
浏览 133回答 1
1回答

慕尼黑5688855

这两个时间位于不同的时区:have在 UTC 中,now在+0300. now因此,在将其与其他时间进行比较之前,您必须从值的日期/时间部分中减去 3 小时。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go