time.Time.Clock în Go

Citește ora dintr-un moment: Clock dă ora, minutul și secunda deodată; Hour, Minute, Second le dau pe rând.

Sintaxă
func (t Time) Clock() (hour, min, sec int)
func (t Time) Hour() int
func (t Time) Minute() int
func (t Time) Second() int

Ce face time.Time.Clock

t.Clock() returnează ora (0-23), minutul (0-59) și secunda (0-59). Hour(), Minute() și Second() returnează câte o componentă. Nanosecundele se citesc cu Nanosecond().

Valorile depind de fusul orar al momentului; convertește întâi cu In dacă ai nevoie de ora din altă zonă.

Ce returnează

Clock: (hour, min, sec int). Celelalte: un int.

Exemple

Exemplul 1: Mesaj de salut după oră

package main

import (
	"fmt"
	"time"
)

func salut(t time.Time) string {
	switch h := t.Hour(); {
	case h < 12:
		return "Bună dimineața"
	case h < 18:
		return "Bună ziua"
	default:
		return "Bună seara"
	}
}

func main() {
	for _, ora := range []int{8, 14, 21} {
		t := time.Date(2026, 10, 19, ora, 0, 0, 0, time.UTC)
		fmt.Printf("%02d:00 -> %s\n", t.Hour(), salut(t))
	}
}

Rezultat

08:00 -> Bună dimineața
14:00 -> Bună ziua
21:00 -> Bună seara

Exemplul 2: Clock și componentele separate

package main

import (
	"fmt"
	"time"
)

func main() {
	t := time.Date(2026, 10, 19, 9, 7, 45, 0, time.UTC)
	h, m, s := t.Clock()
	fmt.Println("Clock():", h, m, s)
	fmt.Println("Hour/Minute/Second:", t.Hour(), t.Minute(), t.Second())

	secundeDeLaMiezulNoptii := h*3600 + m*60 + s
	fmt.Println("Secunde de la miezul nopții:", secundeDeLaMiezulNoptii)
	deschis := h >= 9 && h < 17
	fmt.Println("Magazin deschis:", deschis)
}

Rezultat

Clock(): 9 7 45
Hour/Minute/Second: 9 7 45
Secunde de la miezul nopții: 32865
Magazin deschis: true

Greșeli frecvente

  • Verifici „după ora 17:30” doar cu Hour() > 17. Ține cont și de minute: h > 17 || (h == 17 && m >= 30).

Comenzi înrudite

  • time.Time.Date: Citește data dintr-un moment: Date dă anul, luna și ziua deodată; Year, Month și Day le dau pe rând.
  • time.Time.Truncate: Rotunjește un moment la un multiplu de durată: Truncate în jos, Round la cel mai apropiat (ex. la ora sau sfertul de oră).
  • time.Time.In: Afișează același moment în alt fus orar: In(loc) pentru o zonă anume, UTC() pentru UTC, Local() pentru zona calculatorului.
  • time.Time.Format: Transformă un moment în text după un model scris cu data de referință 2 ianuarie 2006, 15:04:05.