Vrijeme i datum ključne su komponente velikog broja softvera, od uslužnih programa za upravljanje vremenom do web aplikacija. Kao programer, morate znati kako manipulirati vremenom i datumom na bilo kojem jeziku koji koristite.
U igri Go, vrijeme paket uključuje funkcije za manipulaciju vremenom i datumom. Ovim funkcijama možete pristupiti u bilo kojoj izvornoj datoteci uvozom tog paketa.
Dakle, što znači manipulirati vremenom i datumom i kako možete manipulirati vremenom i datumom u Gou?
Što je manipulacija vremenom i datumom?
U skladu sa zahtjevima vašeg programa, možda će trebati kontrolirati, upravljati ili prilagoditi ponašanje ili prikaz vremena i datuma.
Različiti programski jezici imaju vlastite funkcije za manipulaciju vremenom i datumom. Go jezik ima široke mogućnosti, korisne za ovu svrhu.
Manipulacija vremenom i datumom može uključivati:
- Dobivanje trenutnog vremena lokacije ili vremenske zone.
- Izvođenje aritmetičkih operacija s vremenima i datumima.
- Promjena ulazno/izlaznog formata vremena i datuma.
Da biste počeli manipulirati vremenom i datumom u svojim Go aplikacijama, uvezite vrijeme paket uz druge pakete koje koristite.
uvoz (
"fmt"
"vrijeme"
)
Kako dobiti trenutno vrijeme i datum u Go
Uobičajeni slučaj upotrebe za manipulaciju vremenom je dobivanje trenutnog lokalnog vremena ili trenutnog vremena određene vremenske zone ili lokacije.
Da biste dobili vrijeme i datum u vašem lokalnom vremenu ili u određenoj vremenskoj zoni ili lokaciji, možete koristiti vrijeme. Sada() i vrijeme. LoadLocation() funkcije:
funk glavni(){
// Dobivanje trenutnog vremena i datuma u lokalnom vremenu
mojevrijeme := ime. Sada()
fmt. Println("Trenutno vrijeme u ", moje vrijeme. Mjesto(), " je: ", moje vrijeme)// Još jedan način da dobijete lokalno vrijeme
mjesto, _ := vrijeme. LoadLocation("Lokalni") // ili vrijeme. LoadLocation("")
fmt. Println("Trenutno vrijeme u ", lokacija, " je: ", vrijeme. Sada().U (lokacija))// druga lokacija
mjesto, _ = vrijeme. LoadLocation("Amerika/New_York")
fmt. Println("Trenutno vrijeme u ", lokacija, " je: ", moje vrijeme. U (lokacija))
// dobivanje trenutnog vremena u planinskoj vremenskoj zoni (MST)
mjesto, _ = vrijeme. LoadLocation("MST")
fmt. Println("Trenutno vrijeme u ", lokacija, " je: ", moje vrijeme. U (lokacija))
}
Pokretanje gornjeg programa s idi pokreni filename.go proizvodi sljedeći izlaz u terminalu:
Metoda LoadLocation ne podržava svaku kraticu lokacije i vremenske zone. Prema Idi dokumentacija, podržava samo lokacije u baza podataka IANA.org.
Kako dobiti odvojene komponente od zadanog datuma
Svaku komponentu vremenske oznake možete dobiti zasebno što je slično kada rad s vremenom i datumima u JavaScriptu.
Postoje brojni načini da se to postigne pomoću Go-a vrijeme funkcije. Ovaj odjeljak ilustrira svaku metodu.
Možete koristiti Datum() funkcija za dobivanje dana, mjeseca i godine, i Sat() funkciju za dobivanje sati, minuta i sekundi. Na primjer:
funkglavni() {
myTime := vrijeme. Sada();
godina, mjesec, dan := myTime. Datum()
fmt. Println("Godina :", godina)
fmt. Println("Mjesec :", mjesec)
fmt. Println("Dan :", dan)
sat, min, sekunda := mojevrijeme. Sat()
fmt. Println("Sat :", sat)
fmt. Println("Minuta :", min)
fmt. Println("Sekunde :", sek)
}
Izlaz ilustrira različite dijelove vremenske oznake:
Jedinice vremenske oznake možete dobiti i zasebno s vrijeme funkcije za svaku od njih:
funkglavni() {
myTime := vrijeme. Sada()
// dobiti svaku jedinicu od godine do nanosekunde
fmt. Println("Godina :", mojeVrijeme. Godina())
fmt. Println("Mjesec :", mojevrijeme. Mjesec())
fmt. Println("Dan :", mojeVrijeme. Dan())
fmt. Println("Sat :", mojeVrijeme. Sat())
fmt. Println("Minuta :", mojeVrijeme. Minuta())
fmt. Println("Sekunde :", mojeVrijeme. Drugi())
fmt. Println("Nanosekunda :", mojeVrijeme. Nanosekunda())
}
Kao što izlaz ilustrira, ovo vam također daje pristup nanosekundama:
Primjeri do ove točke fokusirali su se na dobivanje jedinica vremenske oznake iz trenutnog vremena. Možete izvršiti iste vrste radnji na vremenskoj oznaci koja to nije vrijeme. Sada().
Možete izdvojiti godinu, mjesec, dan, sat, minutu i sekundu određenog datuma. Da biste to učinili, morate ili inicijalizirati novi objekt datuma ili analizirati datum iz niza:
funkglavni() {
// dobiti pojedinačne komponente vremena od godine do nanosekunde
// od određenog datuma
tvojevrijeme := vrijeme. Datum(2020, 07, 1, 06, 32, 10, 0, vrijeme. UTC)
fmt. Println("Godina :", vaševrijeme. Godina())
fmt. Println("Mjesec :", vaševrijeme. Mjesec())
fmt. Println("Dan :", vaševrijeme. Dan())
fmt. Println("Sat :", vaševrijeme. Sat())
fmt. Println("Minuta :", vaševrijeme. Minuta())
fmt. Println("Sekunde :", vaševrijeme. Drugi())
fmt. Println("Nanosekunda :", vaševrijeme. Nanosekunda())
// korištenje funkcije Clock() za dobivanje sata, minute i sekunde
vaš sat, vaš min, vaš sekund := vaše vrijeme. Sat()
fmt. Println("Sat :", vašSat)
fmt. Println("Minuta :", vaš Min)
fmt. Println("Sekunde :", yourSec)
// dobivanje vremena i datuma iz niza
dateString := "2020-07-0106:32:10"
raspored := "2006-01-0215:04:05" // željeni izlazni format
vaševrijeme, _ = vrijeme. Raščlanjivanje (izgled, dateString)
fmt. Println("Vaše vrijeme je: ", vaševrijeme)
fmt. Println("Godina :", vaševrijeme. Godina())
fmt. Println("Mjesec :", vaševrijeme. Mjesec())
fmt. Println("Dan :", vaševrijeme. Dan())
fmt. Println("Sat :", vaševrijeme. Sat())
fmt. Println("Minuta :", vaševrijeme. Minuta())
fmt. Println("Sekunde :", vaševrijeme. Drugi())
}
Ovaj kod proizvodi sljedeći izlaz:
Imajte na umu da Parse() koristi UTC prema zadanim postavkama ako ne navedete vremensku zonu u nizu datuma.
Kako izvoditi aritmetičke operacije s datumom i vremenom
Aritmetičke operacije još su jedna vrsta manipulacije koju možete izvesti na vremenu i datumu u Gou. Moguće su jednostavne operacije poput zbrajanja, oduzimanja i vremenske razlike.
Go vam omogućuje definiranje vrijeme. Trajanje vrijednosti sa svim jedinicama vremena od vrijeme. Sat do vrijeme. Nanosekunda. Možete koristiti ove vrijednosti za dodavanje ili oduzimanje vremena pomoću Dodati(). Tu je i DodajDatum() funkcija koja uzima 3 parametra: godine, mjesece i dane za izvođenje zbrajanja ili oduzimanja.
Sljedeći kod pokazuje korištenje ovih funkcija:
funkglavni() {
curTime := vrijeme. Sada()
curTime = curTime. Dodajte (vrijeme. Sat) // dodaje jedan sat
fmt. Println("Trenutno vrijeme je: ", curTime)
sutra := curTime. Dodajte (vrijeme. sat * 24)
fmt. Println("Ovo vrijeme sutra je: ", sutra)
sljedećiTjedan := curTime. Dodajte (vrijeme. sat * 24 * 7)
fmt. Println("Ovo vrijeme sljedeći tjedan je: ", nextWeek)
// koristeći AddDate (y, m, d)
nextTomorrow := curTime. DodajDatum(0, 0, 2)
fmt. Println("Ovo vrijeme Sljedeće sutra je: ", sljedećeSutra)
sljedeći mjesec := curtime. DodajDatum(0, 1, 0)
fmt. Println("Ovo vrijeme sljedeći mjesec je: ", nextMonth)
pet godina i jedan mjesec nakon := curtime. DodajDatum(5, 1, 0)
fmt. Println("Ovaj put nakon pet godina i jedan mjesec je: ", fiveYearsAndOneMonthAfter)
}
Što proizvodi sljedeći izlaz:
Također možete oduzeti vrijeme s Dodati() i DodajDatum() prosljeđivanjem negativnih parametara. Na primjer:
funkglavni() {
curTime := vrijeme. Sada()// oduzmite jedan dan koristeći AddDate()
jučer := curTime. DodajDatum(0, 0, -1)
fmt. Println("U ovo vrijeme jučer bilo je: ", jučer)
// oduzmite jedan mjesec koristeći Add()
prošli mjesec := curtime. Dodajte (vrijeme. sat * -24 * 30)
fmt. Println("Ovaj put prošli mjesec je bio: ", lastMonth)
}
Proizvodi ovaj izlaz:
Iako možete koristiti Dodati() i DodajDatum() da biste pronašli razliku između datuma, Go ima Pod() funkcija koja radi malo drugačije:
funkglavni() {
curTime = vrijeme. Sada()
prošlost := vrijeme. Datum(2022, vrijeme. Prosinac, 25, 12, 0, 0, 0, vrijeme. UTC)
diff := prošlost. Sub (curTime)
fmt. Println("Razlika između sada i prošlosti je: ", diff)
// dobiti razliku u raznim jedinicama
godine := int(razl. Sati() / 24 / 365)
fmt. Println("Godine: ", godine)
mjeseci := int(razl. Sati() / 24 / 30)
fmt. Println("Mjeseci: ", mjeseci)
dana := int(razl. Sati() / 24)
fmt. Println("Dani: ", dani)
sati := int(razl. Sati())
fmt. Println("Sati: ", sati)
// razl. Minute(), razl. Sekundi(), razl. Milisekunde(), razl. Nanoseconds() također vraća svoje jedinice
}
Ovaj kod proizvodi sljedeći izlaz:
Kako dobiti vrijeme i datum u različitim formatima
Također možete dobiti rezultate vremena i datuma u više formata pomoću Format() funkcija. Evo nekih uobičajenih stilova oblikovanja:
funkglavni() {
curTime = vrijeme. Sada()
// ugrađeni standardni stilovi oblikovanja
fmt. Println("Trenutno vrijeme je: ", curTime)
fmt. Println("Trenutno vrijeme u formatu RFC3339 je: ", curTime. Format (vrijeme. RFC3339))
fmt. Println("Trenutno vrijeme u RFC3339Nano formatu je: ", curTime. Format (vrijeme. RFC3339Nano))
fmt. Println("Trenutno vrijeme u formatu RFC1123 je: ", curTime. Format (vrijeme. RFC1123))
fmt. Println("Trenutno vrijeme u formatu RFC1123Z je: ", curTime. Format (vrijeme. RFC1123Z))
fmt. Println("Trenutno vrijeme u formatu RFC822 je: ", curTime. Format (vrijeme. RFC822))
fmt. Println("Trenutno vrijeme u formatu RFC822Z je: ", curTime. Format (vrijeme. RFC822Z))
fmt. Println("Trenutno vrijeme u formatu RFC850 je: ", curTime. Format (vrijeme. RFC850))
fmt. Println("Trenutno vrijeme u ANSIC formatu je: ", curTime. Format (vrijeme. ANSIĆ))
fmt. Println("Trenutno vrijeme u Unix formatu je: ", curTime. Format (vrijeme. UnixDate))
// prilagođeni stilovi oblikovanja
// DD-MM-GGGG HH: MM: SS
fmt. Println("Trenutno vrijeme u prilagođenom formatu je: ", curTime. Format("02-01-200615:04:05"))
// MM-DD-GGGG HH: MM: SS
fmt. Println("Trenutno vrijeme u prilagođenom formatu je: ", curTime. Format("01-02-200615:04:05"))
// GGGG-MM-DD HH: MM: SS
fmt. Println("Trenutno vrijeme u prilagođenom formatu je: ", curTime. Format("2006-01-0215:04:05"))
// DD.MM.GGGG
fmt. Println("Trenutno vrijeme u prilagođenom formatu je: ", curTime. Format("02.01.2006"))
// DD/MM/GGGG
fmt. Println("Trenutno vrijeme u prilagođenom formatu je: ", curTime. Format("02/01/2006"))
// 1. veljače 2006
fmt. Println("Trenutno vrijeme u prilagođenom formatu je: ", curTime. Format("02 siječanj 2006"))
// 01. veljače 2006. ponedjeljak
fmt. Println("Trenutno vrijeme u prilagođenom formatu je: ", curTime. Format("02 veljača 2006 Ponedjeljak"))
// 01. veljače 2006. Mon 15:04:05
fmt. Println("Trenutno vrijeme u prilagođenom formatu je: ", curTime. Format("02 veljača 2006 pon 15:04:05"))
}
Ove različite vrste oblikovanja proizvode sljedeći izlaz:
Manipuliranje vremenom i datumom u Go
Popis manipulacija koje možete izvršiti na vremenima i datumima gotovo je beskrajan. Ovisno o opsegu vaše aplikacije, možda ćete morati izvršiti mnoge različite operacije datuma/vremena.
Za svaki slučaj upotrebe koji imate, vrijeme paket je vrlo funkcionalan i ima mnogo ugrađenih metoda.
Možete koristiti manipulaciju datumom i vremenom za izradu jednostavnog dnevnog planera ili aplikacije za raspoređivanje zadataka.