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

如何获取第二天的具体时间

如何获取第二天的具体时间

Go
桃花长相依 2023-06-26 17:02:03
time.Time我想为第二天(明天)的确切时间点创建一个。现在我想设置小时和分钟。这是我目前使用的代码:now := time.Now() tomorrow := time.Date(now.Year(), now.Month(), now.Day(), 15, 0, 0, 0, time.UTC).AddDate(0,0,1)这将为今天创建一个Date具有我正在寻找的确切时间(小时和分钟)的日期,然后添加一天Date。这很好用。例子:想象一下time.Now()是2009-11-10 23:00:00 +0000 UTC。以下代码的结果将是:2009-11-10 15:00:00 +0000 UTCtomorrow := time.Date(now.Year(), now.Month(), now.Day(), 15, 0, 0, 0, time.UTC)到目前为止,我添加了一天使用AddDate(0, 0, 1). 结果就是第二天所需的时间:2009-11-11 15:00:00 +0000 UTC。请参阅: https: //play.golang.org/p/OKR9V1HN50x问题:有没有更短的方法来编写这段代码?
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

打包时间

import "time"

月、日、小时、分钟、秒和纳秒值可能超出其通常范围,并将在转换过程中标准化。例如,10 月 32 日转换为 11 月 1 日。


这样效率更高。它最大限度地减少了对包time函数和方法的调用。

package main


import (

    "fmt"

    "time"

)


func main() {

    now := time.Now()

    fmt.Println(now.Round(0))

    yyyy, mm, dd := now.Date()

    tomorrow := time.Date(yyyy, mm, dd+1, 15, 0, 0, 0, now.Location())

    fmt.Println(tomorrow)

}

输出:


2019-06-21 16:23:06.525478162 -0400 EDT

2019-06-22 15:00:00 -0400 EDT

一些基准:


BenchmarkNow-8                  31197811            36.6 ns/op

BenchmarkTomorrowPeterSO-8      29852671            38.4 ns/op

BenchmarkTomorrowJens-8          9523422           124 ns/op

bench_test.go:


package main


import (

    "testing"

    "time"

)


func BenchmarkNow(b *testing.B) {

    for N := 0; N < b.N; N++ {

        now := time.Now()

        _ = now

    }

}


var now = time.Now()


func BenchmarkTomorrowPeterSO(b *testing.B) {

    for N := 0; N < b.N; N++ {

        // now := time.Now()

        yyyy, mm, dd := now.Date()

        tomorrow := time.Date(yyyy, mm, dd+1, 15, 0, 0, 0, now.Location())

        _ = tomorrow

    }

}


func BenchmarkTomorrowJens(b *testing.B) {

    for N := 0; N < b.N; N++ {

        // now := time.Now()

        tomorrow := time.Date(now.Year(), now.Month(), now.Day(), 15, 0, 0, 0, now.Location()).AddDate(0, 0, 1)

        _ = tomorrow

    }

}


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信