Эпоха является универсальной системой для описания определенного промежутка времени. Начало времени эпохи определяется как 00:00:00 1 Jan 1970 UTC
. Значением эпохи является количество секунд с начала отметки времени, минус количество високосных секунд.
Пакет time
и тип Time
дают возможность оперировать и находить время эпохи UNIX.
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
Как конвертировать дату в UNIX timestamp в Golang?
1. Создайте файл epoch.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 |
package main import ( "fmt" "time" ) func main() { // Устанавливает эпоху из int64 t := time.Unix(0, 0) fmt.Println(t) // Получает эпоху из экземпляра Time epoch := t.Unix() fmt.Println(epoch) // Текущей UNIX timestamp в секундах apochNow := time.Now().Unix() fmt.Printf("Время эпохи в секундах: %d\n", apochNow) apochNano := time.Now().UnixNano() fmt.Printf("Время эпохи в наносекундах: %d\n", apochNano) } |
2. Запустите код через go run epoch.go
;
3. Посмотрите на результат в терминале:
1 2 3 4 |
1970-01-01 00:00:00 +0000 UTC 0 Время эпохи в секундах: 1257894000 Время эпохи в наносекундах: 1257894000000000000 |
Конвертируем строку с датой в UNIX Timestamp
Мы уже знаем как превратить строку с датой в экземпляр Time из предыдущей строки. Мы воспользуемся этими знаниями и превратим строку даты в UNIX timestamp. В примере ниже, мы узнаем сколько секунд прошло от 1 Января 1970 года до 1 января 2020 года.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package main import ( "fmt" "time" ) func main() { var first_january = "01/01/2020" var date_layout = "02/01/2006" tTime, _ := time.Parse(date_layout, first_january) fmt.Printf("%s в UNIX: %d\n", first_january, tTime.Unix()) } |
Результат:
1 |
01/01/2020 в UNIX: 1577836800 |
Конвертируем Unix timestamp в дату
У нас имеется вот такой UNIX timestamp 1234567890
, мы хотим узнать на какую дату оно указывает.
1 2 3 4 5 6 7 8 9 10 11 12 |
package main import ( "fmt" "time" ) func main() { var unix_timestamp int64 = 1234567890 tm := time.Unix(unix_timestamp, 0) fmt.Printf("UNIX Timestamp %d указывает на %s", unix_timestamp, tm.Format("2 January 2006 15:04")) } |
Результат:
1 |
UNIX Timestamp 1234567890 указывает на 13 February 2009 23:31 |
Пакет time
содержит функцию Unix
, что принимает два аргумента типа int64
, а также секунды и наносекунды времени эпохи. В данном случае вы получите экземпляр Time
из значения эпохи.
Для получения значения эпохи из экземпляра Time
можно вызвать метод с тем же названием, что и создание Time
из эпохи Unix
. Есть еще один метод, который называется UnixNano
, что возвращает число миллисекунд вместо секунд.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»