以下程序未返回所需值

package main

import (
    "fmt"
    "time"
)

func main() {
    t:= time.Date(2011, 1, 1, 0, 0, 0, 0, time.UTC)
    _, week := t.ISOWeek()
    fmt.Printf("\nWeek of the year: %v\n", week)


}

它返回
52

代替
1

对我来说,一年的第一天必须在一年的第一周。我在文档中找不到替代功能

最佳答案

查看docs。特别是“周的范围是1到53。n年的1月1日至1月03日可能属于n-1年的52周或53周,12月29日至12月31日可能属于n + 1年的第1周。”

主要是您认为一年中有52周的假设是错误的。这就是为什么你感到困惑。

Go对第52周的计算与其他所有编程语言相同。请查看该日期的this JavaScript实现,注意它也提供52作为星期。

您要的是一个不准确或不有用的功能,这就是为什么这种功能在语言中不存在的原因。为了使该功能正常工作,在年初和年底必须缩短数周的时间。也许您没有意识到一周定义为7天,不同的国家和文化在不同的日子开始和结束一周。

您可以简单地编写一个函数来完成您对“周”的定义所要完成的工作,但是标准库中没有一个函数。

关于date - Golang中的ISOWeek()在一年中的某个星期没有返回期望值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51566166/

10-11 02:32