Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Временске зоне су кључне за сваку апликацију која се бави датумима и временима. Наравно, ово посебно важи за апликације које служе корисницима на свим континентима и на локацијама. Временске зоне одређују помак од универзалног координираног времена (УТЦ) за одређене локације широм света. Они играју виталну улогу у обезбеђивању тачног и поузданог управљања временом.

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

Временски пакет

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

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

instagram viewer

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

увоз"време"

Ево типа временске структуре и њених поља. Поља су неизвезена, тако да их нема у званичној документацији.

пакет главни

тип време струцт {
// зид је време на зиду у формату који враћа рунтиме.нанотиме()
// функција.
зид уинт64

// ект је монотоно очитавање сата у формату који враћа
// рунтиме.нанотиме().
ект инт64

// лоц је показивач на структуру локације која је повезана са овим временом.
лоц *Локација
}

тип Локација струцт {
// наме је назив временске зоне, као што је "УТЦ" или "ПСТ".
име низ

// зона садржи информације о скраћеници временске зоне, померању,
// и правило за једну временску зону на локацији.
зона []зона

// тк садржи информације о томе када је скраћеница временске зоне или
// измене померања за локацију.
тк []зонеТранс

// прошири садржи име родитељске временске зоне ако је ова локација
// се протеже од другог.
проширити низ

// цацхеСтарт и цацхеЕнд су Уник временске ознаке које одређују опсег
// за које је поље цацхеЗоне важеће.
цацхеСтарт инт64
цацхеЕнд инт64

// цацхеЗоне указује на зону која је тренутно важећа за то време
// опсег дефинисан цацхеСтарт и цацхеЕнд.
цацхеЗоне *зона
}

Многе методе користе Време и Локација структуре, укључујући методе временске зоне.

Учитавање информација о временској зони

Учитавање информација о временској зони је једна од основних операција при раду са временским зонама. Тхе ЛоадЛоцатион метода пружа функционалност за учитавање информација о временској зони из ИАНА база података о временским зонама. Тхе ЛоадЛоцатион метода узима име временске зоне и враћа информације о локацији и грешку за руковање. Када учита информације о временској зони, креира а време инстанца структуре повезана са временском зоном.

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

фунцглавни() {
// Учитај локацију временске зоне за Америца/Нев_Иорк
лоц, ерр := време. ЛоадЛоцатион(„Америка/Њу_Јорк“)

ако ерр != нула {
фмт. Принтлн(„Грешка при учитавању локације:“, грешка)
повратак
}

// Добијате тренутно време на локацији
сада := време. Сада().У (лоц)
фмт. Принтлн(„Тренутно време у Њујорку:“, Сада)
}

Тхе У методом Сада функција узима локацију и тамо исписује време:

Поред тога, можете користити ФикедЗоне метод за учитавање тренутног времена на локацији ако знате стринг локације и помак временске зоне од УТЦ. Прво, мораћете да учитате тренутно време у УТЦ, а затим ћете користити ФикедЗоне метод да учитате локација заснована на низу и померању пре прослеђивања локације у методу времена инстанце.

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

фунцглавни() {
// Добијате тренутно време у УТЦ
сада := време. Сада().УТЦ()

// Подесите временску зону за Лагос
лагос := сада. На време. Фиксна зона("ВАТ", 3600))

// Штампа тренутно време на обе локације
фмт. Принтлн(„Тренутно време у Лагосу:“, лагос)
}

Тхе главни функција штампа тренутно време у Лагосу на конзолу.

Мерење трајања временске зоне

Временски пакет обезбеђује Зона метод за преузимање скраћенице и померања временске зоне повезане са а време. време вредност. Метод Зоне враћа стринг који представља скраћеницу временске зоне (нпр. „ЕСТ“ за „Америца/Нев_Иорк“) и цео број који представља број секунди источно од УТЦ.

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

фунцглавни() {
// Учитај локацију временске зоне за Америца/Нев_Иорк
лоц, ерр := време. ЛоадЛоцатион(„Америка/Њу_Јорк“)

ако ерр != нула {
фмт. Принтлн(„Грешка при учитавању локације:“, грешка)
повратак
}

// Добијате тренутно време у УТЦ и наведену локацију
т1 := време. Сада()
т2 := т1.Ин (лоц)

// Добијте помак у секундама за сваку временску зону
//за временске зоне
_, оффсет1 := т1.Зоне()
_, оффсет2 := т2.Зоне()

// Израчунај трајање промене временске зоне
// између УТЦ и Америца/Нев_Иорк
трајање := оффсет2 - оффсет1

фмт. Принтф(„Трајање промене временске зоне“ +
" између УТЦ и Њујорка је: %д секунди", трајање)
}

У главној функцији, метода Зоне мери трајање промене временске зоне између две временске зоне (време. Временске вредности). Тхе т1 променљива је тренутно време у УТЦ, а т2 променљива је тренутно време у временској зони "Америца/Нев_Иорк".

Функција штампа трајање променљива (разлика у офсету између временских зона) која представља померање временске зоне у секундама.

Процена времена између временских зона

Можете проценити време између временских зона ако знате трајање између временских зона. Можете користити Додати метода У методу вашег времена. Инстанца структуре времена за додавање трајања времену у временској зони.

увоз (
"Пријава"
"време"// увоз временског пакета
)

фунцевалуатеТиме(т време. Време, време трајања. Трајање)време.време {
// учитавање локације за Африку/Лагос
локација, грешка := време. ЛоадЛоцатион(„Африка/Лагос“)

ако ерр != нула {
Пријава. Принтлн(„Дошло је до грешке при учитавању локације“)
}

повратак т. У (локација).Додај (трајање)
}

Тхе евалуатеТиме функција одузима време. Временска инстанца и трајање типа време. Трајање, враћајући време у временској зони. Учитава тренутно време у „Африка/Лагос“ и додаје време трајања.

Манипулишите временом и датумом помоћу временског пакета

Временски пакет је веома разноврстан за рад и са временом и са датумима. Пакет времена пружа функције као што су Уник() за претварање времена у Уник време, Слееп() за паузирање горутина и Формат() за форматирање временских вредности у стринг.