【发布时间】:2019-07-17 14:00:05
【问题描述】:
我正在尝试将月、日和年分别打印到控制台。
我需要能够单独访问日期的每个部分。我可以使用“时间”包中的time.now() 来获取全部内容,但在那之后我被卡住了。
谁能告诉我哪里出错了?
【问题讨论】:
-
添加了将月份打印为整数的方式,以防万一有用(显然我昨晚忘记提交编辑了:))。
标签: go
我正在尝试将月、日和年分别打印到控制台。
我需要能够单独访问日期的每个部分。我可以使用“时间”包中的time.now() 来获取全部内容,但在那之后我被卡住了。
谁能告诉我哪里出错了?
【问题讨论】:
标签: go
您实际上非常接近 :) 然后来自 time.Now() 的返回值是 Time 类型,查看包文档 here 将向您展示一些您可以调用的方法(为了更快地了解,转到here 并查看type Time)。要获取您上面提到的每个属性,您可以这样做:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
fmt.Println(t.Month())
fmt.Println(t.Day())
fmt.Println(t.Year())
}
如果您有兴趣将Month 打印为整数,可以使用Printf 函数:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
fmt.Printf("%d\n", t.Month())
}
【讨论】:
可以使用Date() 方法从time.Time 类型中提取日、月和年。它将返回日期和年份的整数,以及月份的 time.Month。您还可以使用 Clock() 方法提取 Hour、Minute 和 Second 值,该方法为所有结果返回整数。
例如:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
y, mon, d := t.Date()
h, m, s := t.Clock()
fmt.Println("Year: ", y)
fmt.Println("Month: ", mon)
fmt.Println("Day: ", d)
fmt.Println("Hour: ", h)
fmt.Println("Minute: ", m)
fmt.Println("Second: ", s)
}
请记住,Month 变量 (mon) 作为 time.Month 返回,而不是作为字符串或 int。您仍然可以使用fmt.Print() 打印它,因为它具有String() 方法。
【讨论】:
您可以只解析字符串以获取年、月和日。
package main
import (
"fmt"
"strings"
)
func main() {
currTime := time.Now()
date := strings.Split(currTime.String(), " ")[0]
splits := strings.Split(date, "-")
year := splits[0]
month := splits[1]
day := splits[2]
fmt.Printf("%s-%s-%s\n", year, month, day)
}
【讨论】: