Kellaaeg ja kuupäev on paljude tarkvarade olulised komponendid, alates ajahaldusutiliitidest kuni veebirakendusteni. Programmeerijana peate teadma, kuidas kellaaega ja kuupäeva mis tahes kasutatavas keeles manipuleerida.

In Go, aega pakett koondab funktsioonid kellaaja ja kuupäevaga manipuleerimiseks. Nendele funktsioonidele pääsete juurde mis tahes lähtefailis, importides selle paketi.

Niisiis, mida tähendab kellaaja ja kuupäevaga manipuleerimine ning kuidas saate Go's kellaaega ja kuupäeva manipuleerida?

Mis on aja ja kuupäeva manipuleerimine?

Vastavalt teie programmi nõuetele võib olla vaja juhtida, hallata või kohandada kellaaegade ja kuupäevade käitumist või esitust.

Erinevad programmeerimiskeeled neil on aja ja kuupäevaga manipuleerimiseks oma funktsioonid. Go keelel on laialdased võimalused, mis on sel eesmärgil kasulikud.

Kellaaja ja kuupäeva manipuleerimine võib hõlmata järgmist:

  • Asukoha või ajavööndi praeguse aja hankimine.
  • Aritmeetiliste toimingute sooritamine kellaaegade ja kuupäevadega.
  • Kellaaegade ja kuupäevade sisend-/väljundvormingu muutmine.

Kellaaja ja kuupäevaga manipuleerimise alustamiseks oma Go rakendustes importige aega pakett koos teiste kasutatavate pakettidega.

importida (
"fmt"
"aega"
)

Kuidas saada Go praegune kellaaeg ja kuupäev

Ajaga manipuleerimise tavaline kasutusjuht on praeguse kohaliku aja või konkreetse ajavööndi või asukoha praeguse kellaaja hankimine.

Kellaaja ja kuupäeva hankimiseks kohaliku aja või kindla ajavööndi või asukoha järgi saate kasutada aega. Nüüd () ja aega. Laadimiskoht() funktsioonid:

func peamine(){
// Hankige praegune kellaaeg ja kuupäev kohaliku aja järgi
myTime := ime. Nüüd ()
fmt. Println("Praegune kellaaeg sisse ", minu aeg. Asukoht (), " on: ", minu aeg)

// Teine võimalus kohaliku aja saamiseks
asukoht, _ := aeg. Laadi asukoht("Kohalik") // või aega. Laadi asukoht("")
fmt. Println("Praegune kellaaeg sisse ", asukoht, " on: ", aeg. Praegu().In (asukoht))

// teine ​​asukoht
asukoht, _ = aeg. Laadi asukoht("Ameerika/New_York")
fmt. Println("Praegune kellaaeg sisse ", asukoht, " on: ", minu aeg. Asukohas (asukoht))

// hankige praegune kellaaeg mäestiku ajavööndis (MST)
asukoht, _ = aeg. Laadi asukoht("MST")
fmt. Println("Praegune kellaaeg sisse ", asukoht, " on: ", minu aeg. Asukohas (asukoht))
}

Käivitage ülaltoodud programm koos käitage failinimi.go toodab terminalis järgmise väljundi:

LoadLocation meetod ei toeta iga asukoha ja ajavööndi lühendit. Vastavalt Minge dokumentatsiooni, see toetab ainult asukohti domeenis IANA.org andmebaas.

Kuidas etteantud kuupäevast eraldi komponente hankida

Saate hankida ajatempli iga komponendi eraldi, mis on sarnane millal kellaaja ja kuupäevadega töötamine JavaScriptis.

Go'si abil on selle saavutamiseks palju võimalusi aega funktsioonid. See jaotis illustreerib iga meetodit.

Võite kasutada Kuupäev() funktsioon päeva, kuu ja aasta hankimiseks ning Kell () funktsioon tundide, minutite ja sekundite saamiseks. Näiteks:

funcpeamine() {
myTime := aeg. Nüüd();
aasta, kuu, päev := myTime. Kuupäev()
fmt. Println("Aasta :", aasta)
fmt. Println("Kuu :", kuu)
fmt. Println("Päev :", päev)

tund, min, sekundit := myTime. Kell ()
fmt. Println("Tund :", tund)
fmt. Println("Minut :", min)
fmt. Println("Sekundid :", s)
}

Väljund illustreerib ajatempli erinevaid osi:

Ajatempli ühikuid saate ka eraldi hankida rakendusega aega funktsioonid igaühe jaoks:

funcpeamine() {
myTime := aeg. Nüüd ()

// hankige iga ühik aastast nanosekundini
fmt. Println("Aasta :", myTime. Aasta())
fmt. Println("Kuu:", minuAeg. Kuu())
fmt. Println("Päev:", minuAeg. päev())
fmt. Println("Tund :", myTime. Tund())
fmt. Println("Minuti :", myTime. minut())
fmt. Println("Sekundid :", myTime. Teine())
fmt. Println("Nanosekund :", myTime. Nanosekund())
}

Nagu väljund illustreerib, annab see teile juurdepääsu ka nanosekunditele:

Senised näited on keskendunud ajatempli ühikute hankimisele praegusest ajast. Saate teostada sama tüüpi toiminguid ajatempliga, mis seda ei ole aega. Nüüd ().

Saate eraldada antud kuupäeva aasta, kuu, päeva, tunni, minuti ja sekundi. Selleks peate kas initsialiseerima uue kuupäevaobjekti või sõeluma kuupäeva stringist:

funcpeamine() {
// hankige aja üksikud komponendid aastast nanosekundini
// kindlast kuupäevast
sinuAeg := aeg. kuupäev(2020, 07, 1, 06, 32, 10, 0, aeg. UTC)
fmt. Println("Aasta:", teie aeg. Aasta())
fmt. Println("Kuu:", teie aeg. Kuu())
fmt. Println("Päev:", teie aeg. päev())
fmt. Println("Tund:", teie aeg. Tund())
fmt. Println("Minut:", teie aeg. minut())
fmt. Println("Sekundid :", teie aeg. Teine())
fmt. Println("Nanosekund :", teie aeg. Nanosekund())
// funktsiooni Clock() abil tundide, minutite ja sekundi hankimiseks
yourHour, yourMin, yourSec := yourTime. Kell ()
fmt. Println ("Tund :", teie tund)
fmt. Println("Minuti :", teieMin)
fmt. Println ("Sekundid :", teie s)

// saada stringist kellaaeg ja kuupäev
dateString := "2020-07-0106:32:10"
paigutus := "2006-01-0215:04:05" // soovitud väljundvorming
yourTime, _ = aeg. Parse (paigutus, dateString)
fmt. Println ("Teie aeg on: ", teie aeg)
fmt. Println("Aasta:", teie aeg. Aasta())
fmt. Println("Kuu:", teie aeg. Kuu())
fmt. Println("Päev:", teie aeg. päev())
fmt. Println("Tund:", teie aeg. Tund())
fmt. Println("Minut:", teie aeg. minut())
fmt. Println("Sekundid :", teie aeg. Teine())
}

See kood annab järgmise väljundi:

Pange tähele, et Parse() kasutab UTC vaikimisi, kui te ei määra kuupäevastringis ajavööndit.

Kuidas teha aritmeetilisi tehteid kuupäeva ja kellaajaga

Aritmeetilised toimingud on teist tüüpi manipulatsioonid, mida saate Go-s aja ja kuupäeva järgi teha. Võimalikud on ka lihtsad toimingud, nagu liitmine, lahutamine ja ajavahe.

Go võimaldab teil määratleda aega. Kestus väärtused kõigi ajaühikutega alates aega. Tund juurde aega. Nanosekund. Neid väärtusi saate kasutada aja liitmiseks või lahutamiseks Lisama(). Samuti on olemas Lisakuupäev() funktsioon, mis võtab liitmiseks või lahutamiseks 3 parameetrit: aastad, kuud ja päevad.

Järgmine kood näitab nende funktsioonide kasutamist:

funcpeamine() {
curtime := aeg. Nüüd ()
curtime = curtime. Lisa (aeg. tund) // lisab ühe tunni
fmt. Println("Praegune aeg on: ", curTime)
homme := curTime. Lisa (aeg. tund* 24)
fmt. Println("See aeg on homme: ", homme)
nextWeek := curtime. Lisa (aeg. tund* 24 * 7)
fmt. Println ("See aeg järgmisel nädalal on: ", järgmisel nädalal)

// kasutades funktsiooni AddDate (y, m, d)
nextTomorrow := curTime. AddDate(0, 0, 2)
fmt. Println("Seekord Järgmine homme on: ", nextTomorrow)
nextMonth := curtime. AddDate(0, 1, 0)
fmt. Println ("See aeg järgmisel kuul on: ", järgmine kuu)
FiveYearsAndOneMonthAfter := curtime. AddDate(5, 1, 0)
fmt. Println("Seekord viis aastat ja üks kuu pärast on: ", FiveYearsAndOneMonthAfter)
}

Mis annab järgmise väljundi:

Samuti saate aega lahutada Lisama() ja Lisakuupäev() negatiivsete parameetrite edastamisega. Näiteks:

funcpeamine() {
curtime := aeg. Nüüd ()

// lahutage üks päev, kasutades AddDate()
eile := curTime. AddDate(0, 0, -1)
fmt. Println("See aeg eile oli: ", eile)

// lahutage üks kuu, kasutades Add()
last Month := curtime. Lisa (aeg. tund* -24 * 30)
fmt. Println("See aeg eelmisel kuul oli: ", eelmisel kuul)
}

Toodab seda väljundit:

Kuigi võite kasutada Lisama() ja Lisakuupäev() kuupäevade vahe leidmiseks on Go a Alam() funktsioon, mis töötab veidi teisiti:

funcpeamine() {
curTime = aeg. Nüüd ()
minevik := aeg. kuupäev(2022, aeg. detsember, 25, 12, 0, 0, 0, aeg. UTC)
diff := minevik. Sub (curtime)
fmt. Println("Erinevus praeguse ja mineviku vahel on: ", erinevus)
// saada erinevus erinevates ühikutes
aastat := int(erinev. Tundi() / 24 / 365)
fmt. Println("Aastad: ", aastat)
kuud := int(erinev. Tundi() / 24 / 30)
fmt. Println("Kuud: ", kuud)
päeva := int(erinev. Tundi() / 24)
fmt. Println("Päevad: ", päevad)
tundi := int(erinev. Tundi ())
fmt. Println("tunnid: ", tunnid)
// diff. Minutid(), erinevus Sekundid(), diff. Milliseconds(), diff. Nanosekundid() tagastavad ka oma ühikud
}

See kood annab järgmise väljundi:

Kuidas saada aega ja kuupäeva erinevates vormingutes

Saate kasutada ka kellaaja ja kuupäeva väljundeid mitmes vormingus Formaat () funktsiooni. Siin on mõned levinumad vormingustiilid.

funcpeamine() {
curTime = aeg. Nüüd ()
// sisseehitatud standardvormingustiilid
fmt. Println("Praegune aeg on: ", curTime)
fmt. Println("Praegune kellaaeg RFC3339 vormingus on: ", curTime. Formaat (aeg. RFC3339))
fmt. Println("Praegune kellaaeg RFC3339Nano vormingus on: ", curTime. Formaat (aeg. RFC3339Nano))
fmt. Println("Praegune kellaaeg RFC1123 vormingus on: ", curTime. Formaat (aeg. RFC1123))
fmt. Println("Praegune kellaaeg RFC1123Z vormingus on: ", curTime. Formaat (aeg. RFC1123Z))
fmt. Println("Praegune kellaaeg RFC822 vormingus on: ", curTime. Formaat (aeg. RFC822))
fmt. Println("Praegune kellaaeg RFC822Z vormingus on: ", curTime. Formaat (aeg. RFC822Z))
fmt. Println("Praegune kellaaeg RFC850 vormingus on: ", curTime. Formaat (aeg. RFC850))
fmt. Println("Praegune aeg ANSIC-vormingus on: ", curTime. Formaat (aeg. ANSIC))
fmt. Println("Praegune kellaaeg Unixi vormingus on: ", curTime. Formaat (aeg. UnixDate))
// kohandatud vormindamisstiilid
// PP-KK-AAAA HH: MM: SS
fmt. Println("Praegune kellaaeg kohandatud vormingus on: ", curTime. Format ("02-01-200615:04:05"))
// KK-PP-AAAA HH: MM: SS
fmt. Println("Praegune kellaaeg kohandatud vormingus on: ", curTime. Format ("01-02-200615:04:05"))
// AAAA-KK-PP HH: MM: SS
fmt. Println("Praegune kellaaeg kohandatud vormingus on: ", curTime. Format ("2006-01-0215:04:05"))
// PP.KK.AAAA
fmt. Println("Praegune kellaaeg kohandatud vormingus on: ", curTime. Format ("02.01.2006"))
// PP/KK/AAAA
fmt. Println("Praegune kellaaeg kohandatud vormingus on: ", curTime. Format ("02/01/2006"))
// 01. veebruar 2006
fmt. Println("Praegune kellaaeg kohandatud vormingus on: ", curTime. Format ("02 jaan 2006"))
// 01. veebruar 2006 esmaspäev
fmt. Println("Praegune kellaaeg kohandatud vormingus on: ", curTime. Format ("02 veebruar 2006 esmaspäev"))
// 01. veebruar 2006 E 15:04:05
fmt. Println("Praegune kellaaeg kohandatud vormingus on: ", curTime. Format ("02 veebruar 2006 Esmasp 15:04:05"))
}

Need erinevat tüüpi vormingud annavad järgmise väljundi:

Kellaaja ja kuupäeva manipuleerimine liikumises

Loetelu manipulatsioonidest, mida saate kellaaegadel ja kuupäevadel teha, on peaaegu lõputu. Olenevalt teie rakenduse ulatusest peate võib-olla tegema palju erinevaid kuupäeva/kellaaja toiminguid.

Igaks kasutusjuhtumiks, mis teil võib olla, aega pakett on väga funktsionaalne ja sellel on palju sisseehitatud meetodeid.

Saate kasutada kuupäeva ja kellaaja manipuleerimist lihtsa päevaplaneerija või ülesannete planeerija rakenduse koostamiseks.