Нахождение разницы между двумя датами — задача не такая уж редкая, как может показаться. В Go для этой задачи есть стандартный пакет time
и тип Time
. Они предоставляют специальные методы для осуществления поставленой задачи.
Как найти разницу между датами в Golang?
1. Создайте файл diff.go
со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package main import ( "fmt" "time" ) func main() { l, err := time.LoadLocation("Europe/Vienna") if err != nil { panic(err) } t := time.Date(2000, 1, 1, 0, 0, 0, 0, l) t2 := time.Date(2000, 1, 3, 0, 0, 0, 0, l) fmt.Printf("Первая дата по умолчанию %v\n", t) fmt.Printf("Вторая дата по умолчанию %v\n", t2) dur := t2.Sub(t) fmt.Printf("Разница между t и t2 - %v\n", dur) dur = time.Since(t) fmt.Printf("Разница между текущим значением и t - %v\n", dur) dur = time.Until(t) fmt.Printf("Разница между t и текущим значением - %v\n", dur) } |
2. Запустите код через go run diff.go
;
3. Посмотрите на результат в терминале:
1 2 3 4 5 |
Первая дата по умолчанию 2000-01-01 00:00:00 +0100 CET Вторая дата по умолчанию 2000-01-03 00:00:00 +0100 CET Разница между t и t2 - 48h0m0s Разница между текущим значением и t - 86448h0m0s Разница между t и текущим значением - -86448h0m0s |
Метод Sub(), Since() и Until() для поиска разницы между датами
Метод Sub
экземпляра Time
является универсальным для нахождения разницы между двумя датами. Результатом является time.Duration
, что представляет счет в наносекундах между двумя датами.
Обратите внимание, что если разница превышает лимит максимума/минимума
time.Duration
, тогда этот максимум или минимум возвращается.
Функции Since
и Until
являются просто коротким способом выяснения разницы между текущим моментом и указанной датой. Их работа соответствует их названиям. Функция Since
возвращает такой же результат, что и time.Now().Sub(t)
; аналогично Until
возвращает такой же результат, что и t.Sub(time.Now())
.
На заметку: Метод
Sub
также учитывает временные зоны. Таким образом, разница возвращается с учетом локации каждого экземпляраTime
.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»