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

Golang 时间比较无法正常工作

Golang 时间比较无法正常工作

Go
郎朗坤 2022-04-26 14:25:50
我在日期比较时遇到问题。代码: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 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

阿德里安给出了答案:

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

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



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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号