golang:有没有办法迭代特定的月份或周

Shi*_*shi 12 date go

是否有一种方法go可以迭代特定月份并从中获取所有time.Date对象?

比如迭代比4月份将导致04012016直到04312016:

for _, dayInMonth := range date.April {
   // do stuff with dates returned
}
Run Code Online (Sandbox Code Playgroud)

(目前上面的代码显然不起作用).

或者,如果不是标准库的一部分,那么第三方库是否相当于moment.js

jus*_*ius 26

没有time.Date对象在标准库中定义.只有time.Time对象.也没有办法对它们进行范围循环,但手动循环它们非常简单:

// set the starting date (in any way you wish)
start, err := time.Parse("2006-1-2", "2016-4-1")
// handle error

// set d to starting date and keep adding 1 day to it as long as month doesn't change
for d := start; d.Month() == start.Month(); d = d.AddDate(0, 0, 1) {
    // do stuff with d
}
Run Code Online (Sandbox Code Playgroud)

  • 关闭,但不会这样做.`First Parse()`返回两个值,所以你需要最少做`start,_:= time.Parse("2006-1-2","2016-4-1")``显然实际上你通常会想要处理而不是丢弃错误.第二个`AddDate()`返回一个time.Time,所以要用它来增加d的值你应该写`for d:= start; d.Month()== start.Month(); d = d.AddDate(0,0,1)` (3认同)