Введите дату печати на консоль

Я пытаюсь распечатать месяц, день и год отдельно для консоли.

Мне нужно иметь доступ к каждому разделу даты в отдельности. Я могу получить все это с помощью time.now() из пакета "time", но я застрял после этого.

Может кто-нибудь показать мне, где я иду не так, пожалуйста?

Ответ 1

Вы на самом деле довольно близко:) Тогда возвращаемое значение из time.Now() является типом Time и смотрит на документы пакета здесь покажет вам некоторые из методов, которые вы можете вызвать (для более быстрого обзора перейдите здесь и посмотрите под 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())
}

Ответ 2

День, месяц и год можно извлечь из time.Time с помощью Date(). Он вернет ints для дня и года и time.Month за месяц. Вы также можете извлечь значения Hour, Minute и Second с помощью метода Clock(), который возвращает int для всех результатов.

Например:

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().

Игровая площадка

Ответ 3

Вы можете просто разобрать строку, чтобы получить год, месяц и день.

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)
}