Време и датум су кључне компоненте великог броја софтвера, од услужних програма за управљање временом до веб апликација. Као програмер, морате знати како да манипулишете временом и датумом на било ком језику који користите.

У Го, тхе време пакет обједињује функције за манипулацију временом и датумом. Овим функцијама можете приступити у било којој изворној датотеци увозом тог пакета.

Дакле, шта значи манипулисати временом и датумом и како можете манипулисати временом и датумом у Го?

Шта је манипулација временом и датумом?

У складу са захтевима вашег програма, можда ће морати да контролише, управља или прилагођава понашање или представљање времена и датума.

Различити програмски језици имају своје функције за манипулацију временом и датумом. Го језик има широке могућности, корисне за ову сврху.

Манипулација временом и датумом може укључивати:

  • Добијање тренутног времена локације или временске зоне.
  • Извођење аритметичких операција над временима и датумима.
  • Промена улазно/излазног формата времена и датума.
instagram viewer

Да бисте почели да манипулишете временом и датумом у вашим Го апликацијама, увезите време пакет заједно са осталим пакетима које користите.

увоз (
"фмт"
"време"
)

Како да добијете тренутно време и датум у Го

Уобичајени случај употребе за манипулацију временом је добијање тренутног локалног времена или тренутног времена одређене временске зоне или локације.

Да бисте добили време и датум у вашем локалном времену или у одређеној временској зони или локацији, можете користити време. Сада() и време. ЛоадЛоцатион() функције:

фунц главни(){
// Добијате тренутно време и датум по локалном времену
миТиме := име. Сада()
фмт. Принтлн("Тренутно време у ", миТиме. Локација(), " је: ", миТиме)

// Други начин да добијете локално време
локација, _ := време. ЛоадЛоцатион("Локални") // или време. ЛоадЛоцатион("")
фмт. Принтлн("Тренутно време у ", локација, " је: ", време. Сада().У (локација))

// друга локација
локација, _ = време. ЛоадЛоцатион("Америца/Нев_Иорк")
фмт. Принтлн("Тренутно време у ", локација, " је: ", миТиме. у (локација))

// добијамо тренутно време у планинској временској зони (МСТ)
локација, _ = време. ЛоадЛоцатион("МСТ")
фмт. Принтлн("Тренутно време у ", локација, " је: ", миТиме. у (локација))
}

Покретање програма изнад са иди покрени име датотеке.го производи следећи излаз у терминалу:

Метод ЛоадЛоцатион не подржава сваку скраћеницу за локацију и временску зону. Према Иди на документацију, подржава само локације у База података ИАНА.орг.

Како добити одвојене компоненте од датог датума

Можете добити сваку компоненту временске ознаке посебно која је слична када рад са временом и датумима у ЈаваСцрипт-у.

Постоји много начина да се то постигне помоћу Го-а време функције. Овај одељак илуструје сваку методу.

Можете користити Датум() функцију за добијање дана, месеца и године и сат() функција за добијање сата, минута и секунди. На пример:

фунцглавни() {
миТиме := време. Сада();
година, месец, дан := моје време. Датум()
фмт. Принтлн("Година:", година)
фмт. Принтлн("Месец:", месец)
фмт. Принтлн("Дан:", дан)

сат, мин, сек := миТиме. сат()
фмт. Принтлн("Сат:", сат)
фмт. Принтлн("Минута:", мин)
фмт. Принтлн("Секунде:", сек)
}

Излаз илуструје различите делове временске ознаке:

Такође можете добити јединице временске ознаке појединачно са време функције за сваку од њих:

фунцглавни() {
миТиме := време. Сада()

// добијамо сваку јединицу од године до наносекунде
фмт. Принтлн("Година:", миТиме. година())
фмт. Принтлн("Монтх:", миТиме. Месец дана())
фмт. Принтлн("Дан:", моје време. дан())
фмт. Принтлн("Сат:", миТиме. сат())
фмт. Принтлн("Минута:", миТиме. минута())
фмт. Принтлн("Секунде:", миТиме. други())
фмт. Принтлн("Наносекунда:", миТиме. наносекунда())
}

Као што излаз илуструје, ово вам такође даје приступ наносекундама:

Примери до ове тачке су се фокусирали на добијање јединица временске ознаке из тренутног времена. Можете извршити исте врсте радњи на временској ознаци која није време. Сада().

Можете издвојити годину, месец, дан, сат, минут и секунду датог датума. Да бисте то урадили, морате или иницијализовати нови објекат датума или рашчланити датум из низа:

фунцглавни() {
// добијамо појединачне компоненте времена од године до наносекунде
// од одређеног датума
вашеВреме := време. Датум(2020, 07, 1, 06, 32, 10, 0, време. УТЦ)
фмт. Принтлн("Година:", ваше време. година())
фмт. Принтлн("Монтх:", иоурТиме. Месец дана())
фмт. Принтлн("Дан:", ваше време. дан())
фмт. Принтлн("Сат:", ваше време. сат())
фмт. Принтлн("Минута:", ваше време. минута())
фмт. Принтлн("Секунде :", ваше време. други())
фмт. Принтлн("Наносекунда:", вашеВреме. наносекунда())
// користећи функцију Цлоцк() за добијање сата, минута и секунда
ваш сат, ваш мин, ваш сек := ваше време. сат()
фмт. Принтлн("Сат:", ваш сат)
фмт. Принтлн("Минута:", ваш Мин)
фмт. Принтлн("Секунде:", ваша секунда)

// добијање времена и датума из стринга
датеСтринг :="2020-07-0106:32:10"
распоред :="2006-01-0215:04:05" // жељени излазни формат
вашеВреме, _ = време. Парсирај (изглед, стринг датума)
фмт. Принтлн("Ваше време је: ", ваше време)
фмт. Принтлн("Година:", ваше време. година())
фмт. Принтлн("Монтх:", иоурТиме. Месец дана())
фмт. Принтлн("Дан:", ваше време. дан())
фмт. Принтлн("Сат:", ваше време. сат())
фмт. Принтлн("Минута:", ваше време. минута())
фмт. Принтлн("Секунде :", ваше време. други())
}

Овај код производи следећи излаз:

Имајте на уму да Парсе() користи УТЦ подразумевано ако не наведете временску зону у низу датума.

Како изводити аритметичке операције са датумом и временом

Аритметичке операције су још једна врста манипулације коју можете извршити на време и датум у Го. Једноставне операције као што су сабирање, одузимање и временска разлика су све могуће.

Го вам омогућава да дефинишете време. Трајање вредности са свим јединицама времена из време. Сат до време. Наносекунда. Можете користити ове вредности за додавање или одузимање времена користећи Додати(). Ту је и један АддДате() функција која узима 3 параметра: године, месеце и дане за обављање сабирања или одузимања.

Следећи код показује употребу ових функција:

фунцглавни() {
цурТиме := време. Сада()
цурТиме = цурТиме. Додајте (време. сат) // додаје један сат
фмт. Принтлн("Тренутно време је: ", цурТиме)
сутра := цурТиме. Додајте (време. сат * 24)
фмт. Принтлн("Ово време сутра је: ", сутра)
нектВеек := цурТиме. Додајте (време. сат * 24 * 7)
фмт. Принтлн("Ово време следеће недеље је: ", следећа недеља)

// користећи АддДате (и, м, д)
нектТоморров := цурТиме. АддДате(0, 0, 2)
фмт. Принтлн("Ово време следеће сутра је: ", следеће сутра)
нектМонтх := цурТиме. АддДате(0, 1, 0)
фмт. Принтлн("Ово време следећег месеца је: ", следећи месец)
фивеИеарсАндОнеМонтхАфтер := цурТиме. АддДате(5, 1, 0)
фмт. Принтлн("Овај пут после пет година и месец дана је: ", пет година и један месец после)
}

Што производи следећи излаз:

Такође можете одузети време са Додати() и АддДате() преношењем негативних параметара. На пример:

фунцглавни() {
цурТиме := време. Сада()

// одузми један дан користећи АддДате()
јуче := цурТиме. АддДате(0, 0, -1)
фмт. Принтлн("Ово време јуче је било: ", јуче)

// одузми један месец користећи Адд()
ластМонтх := цурТиме. Додајте (време. сат * -24 * 30)
фмт. Принтлн("Ово време прошлог месеца је било: ", прошлог месеца)
}

Производи овај излаз:

Иако можете користити Додати() и АддДате() да пронађе разлику између датума, Го има а под() функција која ради мало другачије:

фунцглавни() {
цурТиме = време. Сада()
прошло := време. Датум(2022, време. децембар, 25, 12, 0, 0, 0, време. УТЦ)
дифф := прошлост. Под (тренутно време)
фмт. Принтлн("Разлика између сада и прошлости је: ", разлика)
// добијамо разлику у различитим јединицама
године := инт(разл. Сати() / 24 / 365)
фмт. Принтлн("Године: ", године)
месеци := инт(разл. Сати() / 24 / 30)
фмт. Принтлн("Месеци: ", месеци)
дана := инт(разл. Сати() / 24)
фмт. Принтлн("Дани: ", дани)
сати := инт(разл. сати())
фмт. Принтлн("Сати: ", сати)
// дифф. Минути(), диф. Секунде(), диф. Милисекунде(), диф. Наносекунде() такође враћају своје јединице
}

Овај код производи следећи излаз:

Како добити време и датум у различитим форматима

Такође можете добити излазе времена и датума у ​​више формата користећи Формат() функција. Ево неких уобичајених стилова форматирања:

фунцглавни() {
цурТиме = време. Сада()
// уграђени стандардни стилови форматирања
фмт. Принтлн("Тренутно време је: ", цурТиме)
фмт. Принтлн("Тренутно време у формату РФЦ3339 је: ", цурТиме. Формат (време. РФЦ3339))
фмт. Принтлн("Тренутно време у формату РФЦ3339Нано је: ", цурТиме. Формат (време. РФЦ3339Нано))
фмт. Принтлн("Тренутно време у формату РФЦ1123 је: ", цурТиме. Формат (време. РФЦ1123))
фмт. Принтлн("Тренутно време у формату РФЦ1123З је: ", цурТиме. Формат (време. РФЦ1123З))
фмт. Принтлн("Тренутно време у формату РФЦ822 је: ", цурТиме. Формат (време. РФЦ822))
фмт. Принтлн("Тренутно време у формату РФЦ822З је: ", цурТиме. Формат (време. РФЦ822З))
фмт. Принтлн("Тренутно време у формату РФЦ850 је: ", цурТиме. Формат (време. РФЦ850))
фмт. Принтлн("Тренутно време у АНСИЦ формату је: ", цурТиме. Формат (време. АНСИЦ))
фмт. Принтлн("Тренутно време у Уник формату је: ", цурТиме. Формат (време. УникДате))
// прилагођени стилови форматирања
// ДД-ММ-ГГГГ ХХ: ММ: СС
фмт. Принтлн("Тренутно време у прилагођеном формату је: ", цурТиме. Формат ("02-01-200615:04:05"))
// ММ-ДД-ГГГГ ХХ: ММ: СС
фмт. Принтлн("Тренутно време у прилагођеном формату је: ", цурТиме. Формат ("01-02-200615:04:05"))
// ГГГГ-ММ-ДД ХХ: ММ: СС
фмт. Принтлн("Тренутно време у прилагођеном формату је: ", цурТиме. Формат ("2006-01-0215:04:05"))
// ДД.ММ.ГГГГ
фмт. Принтлн("Тренутно време у прилагођеном формату је: ", цурТиме. Формат ("02.01.2006"))
// ДД/ММ/ГГГГ
фмт. Принтлн("Тренутно време у прилагођеном формату је: ", цурТиме. Формат ("02/01/2006"))
// 01. фебруар 2006
фмт. Принтлн("Тренутно време у прилагођеном формату је: ", цурТиме. Формат ("02 Јан 2006"))
// 01. фебруар 2006. понедељак
фмт. Принтлн("Тренутно време у прилагођеном формату је: ", цурТиме. Формат ("02 фебруара 2006 Понедељак"))
// 01. фебруар 2006. Пон 15:04:05
фмт. Принтлн("Тренутно време у прилагођеном формату је: ", цурТиме. Формат ("02 фебруара 2006 пон 15:04:05"))
}

Ови различити типови форматирања дају следећи излаз:

Манипулисање временом и датумом у Го

Листа манипулација које можете извршити на време и датум је скоро бесконачна. У зависности од обима ваше апликације, можда ћете морати да извршите много различитих операција датума/времена.

За сваки случај употребе који имате, време пакет је веома функционалан и има много уграђених метода.

Можете да користите манипулацију датумом и временом да бисте направили једноставан дневни планер или апликацију за планирање задатака.