Date 在不考虑时间的情况下比较两个日期
我有两个这样的日期,我只想比较日期,忽略时间。目前我有:Date 在不考虑时间的情况下比较两个日期,date,go,Date,Go,我有两个这样的日期,我只想比较日期,忽略时间。目前我有: package main import ( "time" //"fmt" ) func main() { a, _ := time.Parse(time.RFC3339, "2017-02-01T12:00:00+00:00") b, _ := time.Parse(time.RFC3339, "2017-02-11T14:30:00+00:00") x := b.Sub(a) pr
package main
import (
"time"
//"fmt"
)
func main() {
a, _ := time.Parse(time.RFC3339, "2017-02-01T12:00:00+00:00")
b, _ := time.Parse(time.RFC3339, "2017-02-11T14:30:00+00:00")
x := b.Sub(a)
println(int(x.Hours()))
}
打印242
。这是正确的,但我实际上想做的是比较如下日期:
a, _ := time.Parse(time.RFC3339, "2017-02-01T00:00:00+00:00")
b, _ := time.Parse(time.RFC3339, "2017-02-11T00:00:00+00:00")
注意:分钟/小时/秒已设置为零-差值现在将为240小时
我真的不知道怎么做,Go中是否有我错过的time.SetTime(0,0,0)
函数,或者重置日期时间的标准方法是什么 你可以把时间调整到一天的倍数
在您的示例中:
oneDay := 24 * time.Hour
a = a.Truncate(oneDay)
b = b.Truncate(oneDay)
请在此处找到一个具有相应代码的游乐场:如果使用time.time,您必须非常小心地处理日期,因为夏令时的开始和结束可能会出现边缘情况 无耻的插件:我编写了一个日期包(实际上它是从其他人早期的工作中派生出来的)来处理日期,而不会引起DST问题 你可以做,比如
a := date.New(2017, 2, 1)
b := date.New(2017, 2, 11)
daysDifference := b.Sub(a)
fmt.Println(daysDifference)
还有其他子包来处理日期范围、时间跨度、ISO8601周期和时钟面时间。好的,我明白了。我以前阅读过API文档,但不确定如何使用
Truncate
方法。我试试看,谢谢。你还想考虑时区吗?例如,2017-01-01T22:00:00+00:00
和2017-01-02T02:00:00+04:00
在时间上是相同的时刻,但用不同的时区来描述。这是一个好问题,我工作的日期都假定为UTC,所以这并不重要。但如果他们有不同的时区,我需要考虑到这一点。好吧,在这种情况下,欧金尼欧的答案似乎涵盖了这一点。仅供参考-他们的回答考虑了时区,因此我提到的两个日期将被视为同一天,因此相隔0小时。