【问题标题】:Go: compare two time structs considering only the datesGo:仅考虑日期比较两个时间结构
【发布时间】:2016-08-10 22:48:09
【问题描述】:

我正在寻找一种干净的方式来执行此操作:

package main 

import(
    "fmt"
    t "time"
)

func isSameDate() bool {
    timeA, err := t.Parse("01022006 15:04", "08152016 09:00")
    timeB, err := t.Parse("01022006 15:04", "08152016 07:30")

    return timeA.Date == timeB.Date // This is C# code but I'm looking for something similar in GO
}

应该返回真

【问题讨论】:

    标签: date go time


    【解决方案1】:

    如果您使用时间包中的Truncate function,您可以将其缩减为日期。

    因此使用参数24 * time.Hour 截断两次以获取每个时间的日期并与Equal function 进行比较。

    timeA, _ := t.Parse("01022006 15:04", "08152016 09:00")
    timeB, _ := t.Parse("01022006 15:04", "08152016 07:30")
    return timeA.Truncate(24 * time.Hour).Equal(timeB.Truncate(24*time.Hour))
    

    示例如下:https://play.golang.org/p/39ws4DL2pB

    【讨论】:

      【解决方案2】:

      可以将timeA.Date() 格式调用为字符串,并像下面的示例一样比较它们。不知道有没有更好的办法。

      func isSameDate() bool {
          timeA, _ := t.Parse("01022006 15:04", "08152016 09:00")
          timeB, _ := t.Parse("01022006 15:04", "08152016 07:30")
      
          ay, am, ad := timeA.Date()
          a := fmt.Sprintf("%d%d%d", ay, am, ad)
      
          by, bm, bd := timeB.Date()
          b := fmt.Sprintf("%d%d%d", by, bm, bd)
          return a == b
      }
      

      【讨论】:

      • @RAFJR 看看上面的 Verrans 回答。这是正确的方法。
      猜你喜欢
      • 2021-01-24
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多