Публикации - Go

Типы данных - Основные типы данных, однотипные - Дата и время

Главное при работе с временем и датами в Go — тип данных time.Time, который представляет момент времени с точностью до наносекунды. Каждое значение time.Time связано с местоположением (часовым поясом).

Функция time.Now().Unix() возвращает популярное время эпохи UNIX, которое представляет собой количество секунд, прошедших с 00:00:00 UTC 1 января 1970 года. Если вы хотите преобразовать время UNIX в эквивалентное значение time.Time, то можете использовать функцию time.Unix().

Для синтаксического анализа используется функция time.Parse(), и ее полная сигнатура выглядит так: Parse(layout, value string) (Time, error), где layout — это формат, а value — входные данные для анализа. Возвращаемое значение time.Time представляет собой момент времени с точностью до наносекунды и содержит информацию как о дате, так и о времени.

В приведенном ниже коде показано, как работать с временем эпохи в Go, и представлен сам процесс анализа.

package main

import (
	"fmt"
	"os"
	"time"
)

func main() {
	start := time.Now()

	if len(os.Args) != 2 {
		fmt.Println("Usage: dates parse_string")
		return
	}
	dateString := os.Args[1]

	// Сравнение только даты
	d, err := time.Parse("02 January 2006", dateString)
	if err == nil {
		fmt.Println("Full:", d)
		fmt.Println("Time:", d.Day(), d.Month(), d.Year())
	}

	// Сравнение даты и времени
	d, err = time.Parse("02 January 2006 15:04", dateString)
	if err == nil {
		fmt.Println("Full:", d)
		fmt.Println("Date:", d.Day(), d.Month(), d.Year())
		fmt.Println("Time:", d.Hour(), d.Minute())
	}

	// Сравнение даты с числовым значением месяца и времени
	d, err = time.Parse("02-01-2006 15:04", dateString)
	if err == nil {
		fmt.Println("Full:", d)
		fmt.Println("Date:", d.Day(), d.Month(), d.Year())
		fmt.Println("Time:", d.Hour(), d.Minute())
	}

	// Сравнение только времени
	d, err = time.Parse("15:04", dateString)
	if err == nil {
		fmt.Println("Full:", d)
		fmt.Println("Time:", d.Hour(), d.Minute())
	}

	t := time.Now().Unix()
	fmt.Println("Epoch time:", t)
	// Convert Epoch time to time.Time
	d = time.Unix(t, 0)
	fmt.Println("Date:", d.Day(), d.Month(), d.Year())
	fmt.Printf("Time: %d:%d\n", d.Hour(), d.Minute())

	duration := time.Since(start)
	fmt.Println("Execution time:", duration)
}
Данная утилита принимает дату и время и преобразует их в разные часовые пояса. Пример:
loc, _ = time.LoadLocation("America/New_York")
fmt.Printf("New York Time: %s\n", now.In(loc))

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться