【问题标题】:Obtain duration since last midnight in time zone获取时区上一个午夜以来的持续时间
【发布时间】:2021-12-08 16:15:12
【问题描述】:

我想获取一个时区从上个午夜开始的持续时间。

我尝试了以下方法:

estLocation, _ := time.LoadLocation("America/New_York")
nowEST := time.Now().In(estLocation)
midnightEST := nowEST.Truncate(24 * time.Hour)
diff := time.Since(midnightEST)

以及使用Round 代替Truncate

但是,这只会将时钟调回 24 小时,而不是返回美国东部标准时间的午夜。

如何做到这一点?

【问题讨论】:

    标签: go time


    【解决方案1】:

    通过从日期构造时间来获取午夜时间:

    loc, _ := time.LoadLocation("America/New_York")
    now := time.Now().In(loc)
    midnight := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, loc)
    

    从现在减去午夜得到持续时间:

    d := now.Sub(midnight)
    

    Run it on the playground。请注意,time.Now() 是操场上的常量值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-05
      • 2010-09-27
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 2013-09-29
      相关资源
      最近更新 更多