为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 时间比较无法正常工作

Golang 时间比较无法正常工作

Go
墨色风雨 2022-04-26 14:11:11
我在日期比较时遇到问题。代码:func inTimeSpan(start, end, check time.Time) bool {    return check.After(start) && check.Before(end)}func checkTime(date string) { //Note that the date passed here is from SQL Server    date1 := time.Now()    date2, err := time.Parse("2006-01-02 15:04:05", date)    if err != nil {        log.Print(err)        return    }    date3 := now.Add(1 * time.Hour)  // 1 hour later than now    log.Print("Date1 : ", date1.Format("2006-01-02 15:04:05"))    log.Print("Date2 : ", date2.Format("2006-01-02 15:04:05"))    log.Print("Date3 : ", date3.Format("2006-01-02 15:04:05"))    if inTimeSpan(date1, date3, date2) {        log.Print("Date2 is in the range between date1 and date3.")    } else {        log.Print("Date2 is not between date1 and date3.")    }    return}预期输出:2019/12/15 19:31:02 Date1 : 2019-12-15 19:31:022019/12/15 19:31:02 Date2 : 2019-12-15 19:45:002019/12/15 19:31:02 Date3 : 2019-12-15 20:31:022019/12/15 19:31:02 Date2 is in the range between date1 and date3.实际输出:2019/12/15 19:31:02 Date1 : 2019-12-15 19:31:022019/12/15 19:31:02 Date2 : 2019-12-15 19:45:002019/12/15 19:31:02 Date3 : 2019-12-15 20:31:022019/12/15 19:31:02 Date2 is not between date1 and date3.由于某种原因,日期比较按预期工作。有什么我想念的吗?
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

阿德里安给出了答案:

可能希望将时区添加到您的调试打印语句中。我的猜测是那些时间并不都在同一个 TZ 中。– 阿德里安

SQL Server 将时区默认为 UTC,其余时间为+0200. 我最终对 SQL Server 进行了一些大的更改,以设置所有日期+0200以及在正确时区输入的所有新日期。


查看完整回答
反对 回复 2022-04-26
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信