关于 Time.Before 陷阱

Justin19960208 · 2018-08-04 11:44:53 · 3765 次点击

此楼正解,楼主代码中time.Parse得到时区0的时间,time.Now得到东八区时间。建议time.Parse解析时加上时区

#3
更多评论
Justin19960208
Insects awaken soon after the first day of spring.

上一个实现:

func IsTimeThrough(clockTime string) bool {
    tm, err := time.Parse("2006-01-02 15:04:05", clockTime)
    if err != nil {
        return false
    }

    // as the restricted condition for time.Before()
    now := time.Now().Add(time.Minute * 10)
    nY, nM, nD := now.Date()
    tY, tM, tD := tm.Date()
    if tY > nY {
        return true
    } else if tY < nY {
        return false
    }
    // tY == nY
    if tM > nM {
        return true
    } else if tM < nM {
        return false
    }
    // tM == nM
    if tD > nD {
        return true
    } else if tD < nD {
        return false
    }
    // tD == nD
    nH, nMinute, nS := now.Clock()
    tH, tMinute, tS := tm.Clock()
    if tH > nH {
        return true
    } else if tH < nH {
        return false
    }
    // tH == nH
    if tMinute > nMinute {
        return true
    } else if tMinute < nMinute {
        return false
    }
    // tMinute == nMinute
    if tS > nS {
        return  true
    }

    return false
}
#1

建议楼主把时区信息也打印出来,就知道是怎么回事了

#2