英文:
Calculate number of days between two dates?
问题
如何计算两个日期之间的天数?在下面的代码中,我应该得到小时数,这意味着我只需要除以24。然而,我得到的结果是类似于**-44929.000000**的值。我只是想要回溯一两天,所以我期望得到24或48小时。
package main
import (
"fmt"
"time"
)
func main() {
timeFormat := "2006-01-02"
t, _ := time.Parse(timeFormat, "2014-12-28")
fmt.Println(t)
// duration := time.Since(t)
duration := time.Now().Sub(t)
fmt.Printf("%f", duration.Hours())
}
这是可执行的Go代码:http://play.golang.org/p/1MV6wnLVKh
英文:
How can I calculate the number of days between two dates? In the code below I should get the number of hours, which means that I should only need to divide by 24. However, the result I get is something like -44929.000000. I'm only looking a day or two back so I would expect 24 or 48 hours.
package main
import (
"fmt"
"time"
)
func main() {
timeFormat := "2006-01-02"
t, _ := time.Parse(timeFormat, "2014-12-28")
fmt.Println(t)
// duration := time.Since(t)
duration := time.Now().Sub(t)
fmt.Printf("%f", duration.Hours())
}
Here's the executable Go code: http://play.golang.org/p/1MV6wnLVKh
答案1
得分: 20
你的程序似乎按预期工作。我得到了45.55小时。你尝试在本地运行过吗?
Playground的时间是固定的,time.Now()将始终给出2009-11-10 23:00:00 +0000 UTC。
英文:
Your program seems to work as intended. I'm getting 45.55 hours. Have you tried to run it locally?
Playground time is fixed, time.Now() will give you 2009-11-10 23:00:00 +0000 UTC always.
答案2
得分: 13
package main
import (
"fmt"
"time"
)
func main() {
date := time.Now()
fmt.Println(date)
format := "2006-01-02 15:04:05"
then,_ := time.Parse(format, "2007-09-18 11:58:06")
fmt.Println(then)
diff := date.Sub(then)
//func Since(t Time) Duration
//Since returns the time elapsed since t.
//It is shorthand for time.Now().Sub(t).
fmt.Println(diff.Hours())// 小时数
fmt.Println(diff.Nanoseconds())// 纳秒数
fmt.Println(diff.Minutes())// 分钟数
fmt.Println(diff.Seconds())// 秒数
fmt.Println(int(diff.Hours()/24))// 天数
}
这是一个Go语言的代码示例,它演示了如何计算两个时间之间的差异。代码中使用了time
包来处理时间相关的操作。首先,获取当前时间并打印输出。然后,定义一个时间格式,并使用time.Parse
函数将一个指定格式的时间字符串解析为时间对象。接下来,计算当前时间与指定时间之间的差异,并打印输出差异的小时数、纳秒数、分钟数、秒数以及天数。
你可以在这里运行这段代码:https://play.golang.org/p/Vbhh1cBKnh
英文:
package main
import (
"fmt"
"time"
)
func main() {
date := time.Now()
fmt.Println(date)
format := "2006-01-02 15:04:05"
then,_ := time.Parse(format, "2007-09-18 11:58:06")
fmt.Println(then)
diff := date.Sub(then)
//func Since(t Time) Duration
//Since returns the time elapsed since t.
//It is shorthand for time.Now().Sub(t).
fmt.Println(diff.Hours())// number of Hours
fmt.Println(diff.Nanoseconds())// number of Nanoseconds
fmt.Println(diff.Minutes())// number of Minutes
fmt.Println(diff.Seconds())// number of Seconds
fmt.Println(int(diff.Hours()/24))// number of days
}
Here is the running code https://play.golang.org/p/Vbhh1cBKnh
答案3
得分: 2
下面的代码列出了从起始日期到结束日期之间的所有日期,并显示了日期之间的天数:
to := time.Now()
from := to.AddDate(0, -1, 0)
fmt.Println("toDate", to)
fmt.Println("fromDate", from)
days := to.Sub(from) / (24 * time.Hour)
fmt.Println("days", int(days))
noofdays := int(days)
for i := 0; i <= noofdays; i++ {
fmt.Println(from.AddDate(0, 0, i))
}
你可以点击以下链接查看代码在Go PlayGround上的演示:https://play.golang.org/p/MBThBpTqjdz
英文:
> the below code gives the list of all the days along with the number of days between the from date and to date:
you can click on the link for the code in
Go PlayGround:https://play.golang.org/p/MBThBpTqjdz
to := time.Now()
from := to.AddDate(0, -1, 0)
fmt.Println("toDate", to)
fmt.Println("fromDate", from)
days := to.Sub(from) / (24 * time.Hour)
fmt.Println("days", int(days))
noofdays := int(days)
for i := 0; i <= noofdays; i++ {
fmt.Println(from.AddDate(0, 0, i))
}
答案4
得分: 2
使用timeOne.Sub(timeTwo).Hours() / 24
这种技术时需要注意一个问题,即夏令时可能导致一天只有23个小时,从而稍微影响到这个计算结果。
英文:
One caveat to be mindful of when using this technique of timeOne.Sub(timeTwo).Hours() / 24
is that daylights savings can cause a day to contain only 23 hours, throwing this calculation off slightly.
答案5
得分: 0
快乐的程序员节
package main
import (
"fmt"
"time"
)
func main() {
loc, _ := time.LoadLocation("UTC")
now := time.Now().In(loc)
firstDate := time.Date(now.Year(), 1, 1, 0, 0, 0, 0, loc)
diff := now.Sub(firstDate)
fmt.Printf("今天%s与%s之间的差距是%d天\n", now.String(), firstDate.String(), int(diff.Hours()/24)+1)
// Just a joke
if ( int(diff.Hours()/24)+1 == 256 ) {
fmt.Printf("¡快乐的程序员节!")
} else {
fmt.Printf("在我的电脑上它可以运行...!?")
}
}
英文:
Happy programmer's day
package main
import (
"fmt"
"time"
)
func main() {
loc, _ := time.LoadLocation("UTC")
now := time.Now().In(loc)
firstDate := time.Date(now.Year(), 1, 1, 0, 0, 0, 0, loc)
diff := now.Sub(firstDate)
fmt.Printf("The difference between %s and today %s es %d days\n", now.String(), firstDate.String(), int(diff.Hours()/24)+1)
// Just a joke
if ( int(diff.Hours()/24)+1 == 256 ) {
fmt.Printf("¡Happy programmer's day!")
} else {
fmt.Printf("On my computer it works...!?")
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论