Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date golang中的ISOWeek()未返回一年中某周的所需值_Date_Go_Time_Isodate - Fatal编程技术网

Date golang中的ISOWeek()未返回一年中某周的所需值

Date golang中的ISOWeek()未返回一年中某周的所需值,date,go,time,isodate,Date,Go,Time,Isodate,以下程序未返回所需的值 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 对我来说,一年的第一天必须在一年的第一周是有道理的。我在

以下程序未返回所需的值

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
对我来说,一年的第一天必须在一年的第一周是有道理的。我在文档中找不到替代函数查看。特别是“周范围从1到53。n年的1月1日到3月3日可能属于n-1年的第52周或53周,12月29日到12月31日可能属于n+1年的第1周”

主要是你认为一年有52周是错误的。这就是你困惑的原因

Go对第52周的计算与其他编程语言相同。请看一下该日期的实现情况,注意它也提供了52个星期

你要的是一个函数,它不准确也不有用,这就是为什么这种函数在语言中不存在的原因。为了使这一职能发挥作用,必须在年初和年底取消几周。也许你没有意识到一周被定义为7天,不同的国家和文化在不同的日子开始和结束他们的一周


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

您的争论是基于您的观点,而不是事实、参考或特定的专业知识。Go ISOWeek函数是ISO 8601标准的实现。这个问题主要是基于观点的。ISOs不是事实,只是惯例,但我喜欢你的回答。我没有说一年有52周,我说程序返回52周。原因在倒数第二段@zeellos,这一周是2010年的第52周,这个数字“结转”到下一年,所以本周没有两个数字。当涉及到日期和时间时,事情很少是整洁和清晰的,大多数简单的规则都有大量的例外:-(