DateTime – это тип, содержащий свойства даты и времени в определенный момент времени. Язык Go предоставляет несколько способов форматирования даты и времени с помощью пакета time.

Пакет time предоставляет необходимые функции для определения, измерения и отображения времени. Пакет time также содержит основные методы форматирования, анализа, отображения и управления датой и временем. Любая переменная или поле в структуре, которая хранит время как значение, будет иметь тип time.Time, представляющий момент времени с точностью до наносекунды. Например, приведенный ниже код выводит текущую дату и время со всей информацией на стандартную консоль.

Текущая дата и время

package main 

import ( 
  "fmt" 
  "time" 
) 

func main() { 
  // current date and time from the time package 
  currentDateTime := time.Now() 
  fmt.Printf("The current Date and Time is : \n%v\n", currentDateTime) 
}
The Current Date and Time is : 
2023-04-15 00:35:28.874346692 +0530 IST m=+0.000067377

Спецификаторы стандартного формата и примеры их использования

В целях удобочитаемости мы склонны форматировать определенную дату и время; Go предоставляет метод time.Time, который можно вызывать для значения типа Time. Format — это метод, который принимает макет строки и преобразует приемник времени в строку, соответствующую указанному шаблону.

ДАТА: 2 января 2006 г. – 02.01.2006 г.

Это популярный формат в США, который отображает дату в формате месяц-день-год. В Go вы можете использовать строку макета «2 января 2006 г.» или «02/01/2006» для форматирования дат таким образом.

package main 

import ( 
  "fmt" 
  "time" 
) 

func main() { 
  t := time.Now() 
  fmt.Println(t.Format("April 15, 2023")) 
  fmt.Println(t.Format("04/15/2023")) 
}
April 15, 2023 
04/15/2023

Этот формат обычно используется для отображения времени в формате часы:минуты:секунды. В Go вы можете использовать строку макета «15:04:05», чтобы отображать время в этом формате. Чтобы отображать время в 12-часовом формате с индикатором AM/PM, используйте строку макета «03:04 PM».

package main 

import ( 
  "fmt" 
  "time" 
) 

func main() { 
  t := time.Now() 
  fmt.Println(t.Format("19:14:27")) 
  fmt.Println(t.Format("07:14 PM")) 
}
19:14:27
07:14 PM

Go поддерживает различные форматы даты и времени; однако при желании вы также можете использовать одну из предопределенных Layout констант, поставляемых с Go. layout — это строковый формат, передаваемый в качестве аргумента функции Format.

Вот некоторые предопределенные макеты, но, пожалуйста, обратитесь к документации Go для получения полного списка.

ISO 8601 — RFC3339:
ISO 8601 — это международный стандарт представления даты и времени. RFC3339 — это профиль ISO 8601, который обычно используется в Интернете.

package main 

import ( 
  "fmt" 
  "time" 
) 

func main() { 
  currentDateTime := time.Now() 
  fmt.Printf("Kitchen: %v\n", currentDateTime.Format(time.Kitchen)) 
  fmt.Printf("RFC1123: %v\n", currentDateTime.Format(time.RFC1123)) 
  fmt.Printf("RFC3339: %v\n", currentDateTime.Format(time.RFC3339)) 
}
Kitchen: 1:17AM 
RFC1123: Sat, 15 Apr 2023 01:17:00 IST 
RFC3339: 2023-04-15T01:19:14+05:30

Дополнительную информацию об элементах макета можно найти в документации Go для пакета time.

Это всего лишь несколько примеров форматирования даты и времени в Go. Для получения дополнительной информации ознакомьтесь с документацией Go для пакета time.

Первоначально опубликовано на https://developersjournal.in 14 апреля 2023 г.