func (t Time) Format(layout string) string
Format возвращает текстовое представление значения времени, отформатированного в соответствии с layout, который определяет формат, показывая, как эталонное время определенное как
Mon Jan 2 15:04:05 -0700 MST 2006
будет отображаться, если это будет значение; это служит примером желаемого результата. Те же правила отображения будут применяться к значению времени.
Дробная секунда представляется путем добавления точки и нулей в конец секции секунд строки макета, как в "15:04:05.000" для форматирования метки времени с точностью до миллисекунды.
Предопределенные макеты ANSIC, UnixDate, RFC3339 и другие описывают стандартные и удобные представления эталонного времени.
Пример использования Format
package main
import (
"fmt"
"time"
)
func main() {
// Анализируем значение времени из строки
// в стандартном формате Unix.
t, err := time.Parse(time.UnixDate, "Sat Mar 7 11:06:39 PST 2015")
// Всегда проверяйте ошибки,
// даже если они не должны возникать.
if err != nil {
panic(err)
}
// Метод String типа time.Time выдает
// полезное значение без какого-либо формата.
// Println проверяет, что передеанное значение
// реализует интерфейс Stringer
// и вызывает его метод String
fmt.Println("Формат по умолчанию:", t)
// Предопределенные константы в пакете
// реализуют общие макеты.
fmt.Println("Unix формат:", t.Format(time.UnixDate))
// Часовой пояс, привязанный к значению времени,
// влияет на его вывод.
fmt.Println("То же самое, но в UTC:", t.UTC().Format(time.UnixDate))
// Остальная часть этой функции демонстрирует свойства
// строки макета, используемой в формате.
// Строка макета, используемая
// функцией Parse и методом Format
// показывает на примере, как должно быть
// представлено эталонное время.
// Подчеркнем, что нужно показать,
// как форматируется эталонное время,
// не время выбора пользователя.
// Таким образом, каждая строка макета является
// представление метки времени,
// Jan 2 15:04:05 2006 MST
// Простой способ запомнить это значение -
// оно хранится при представлении
// в этом порядке значения
// (выровненные с элементами выше):
// 1 2 3 4 5 6 -7
// Ниже показаны некоторые примеры.
// Большинство применений Format и Parse
// используют строки константного макета, такие как
// определенные в пакете time, но интерфейс гибкий,
// как показывают эти примеры.
// Определяем вспомогательную функцию,
// чтобы вывод примеров выглядел красиво.
do := func(name, layout, want string) {
got := t.Format(layout)
if want != got {
fmt.Printf("ошибка: для %q получено %q; ожидалось %q\n", layout, got, want)
return
}
fmt.Printf("%-25s %q дает %q\n", name, layout, got)
}
// Распечатать заголовок в нашем выводе.
fmt.Printf("\nФорматы:\n\n")
// Простой стартовый пример.
do("Базовый", "Mon Jan 2 15:04:05 MST 2006", "Sat Mar 7 11:06:39 PST 2015")
// Для печати значений фиксированной ширины,
// таких как дата, которые могут быть одним или
// двумя символами (7 против 07),
// используйте _ вместо пробела в строке макета.
// Здесь мы печатаем только день,
// который равен 2 в нашей строке макета
// и 7 в нашем значении.
do("Без пробела", "<2>", "<7>")
// Подчеркивание представляет пробел,
// если дата имеет только одну цифру.
do("Пробелы", "<_2>", "< 7>")
// "0" указывает заполнение нулями
// для однозначных значений.
do("Нули", "<02>", "<07>")
// Если значение уже правильной ширины,
// заполнение не используется.
// Например, второе (05 в эталонном времени)
// в нашем значении равно 39,
// так что он не нуждается в заполнении,
// а минуты (04, 06) нуждаются.
do("Подавленное заполнение", "04:05", "06:39")
// Предопределенная константа Unix
// использует подчеркивание для дополнения дня.
// Сравните с нашим простым начальным примером.
do("Unix", time.UnixDate, "Sat Mar 7 11:06:39 PST 2015")
// Час эталонного времени 15 или 3PM.
// Макет может выражать это так или иначе,
// и так как наша значение - утро,
// мы должны видеть это как время AM.
// Мы показываем оба в одной строке формата. Строчный вид тоже.
do("AM/PM", "3PM==3pm==15h", "11AM==11am==11h")
// При разборе, если за значением секунд
// следует десятичная точка и несколько цифр,
// которые считаются долями секунды, даже если
// строка макета не представляет доли секунды.
// Здесь мы добавляем долю секунды
// к нашему значению времени, использованному выше.
t, err = time.Parse(time.UnixDate, "Sat Mar 7 11:06:39.1234 PST 2015")
if err != nil {
panic(err)
}
// Не отображается в выводе,
// если строка макета не содержит
// представление дробной секунды.
do("Без дробной части", time.UnixDate, "Sat Mar 7 11:06:39 PST 2015")
// Дробные секунды могут быть напечатаны
// путем добавления серии 0 или 9 после
// десятичной точки в значении секунд в строке макета.
// Если цифры макета равны 0,
// дробная секунда имеет указанную ширину.
// Обратите внимание, что выход имеет конечный ноль.
do("0 для дробной части", "15:04:05.00000", "11:06:39.12340")
// Если дробь в макете равна 9, конечные нули удаляются.
do("9 для дробной части", "15:04:05.99999999", "11:06:39.1234")
}
Вывод:
Формат по умолчанию: 2015-03-07 11:06:39 +0000 PST
Unix формат: Sat Mar 7 11:06:39 PST 2015
То же самое, но в UTC: Sat Mar 7 11:06:39 UTC 2015
Форматы:
Базовый "Mon Jan 2 15:04:05 MST 2006" дает "Sat Mar 7 11:06:39 PST 2015"
Без пробела "<2>" дает "<7>"
Пробелы "<_2>" дает "< 7>"
Нули "<02>" дает "<07>"
Подавленное заполнение "04:05" дает "06:39"
Unix "Mon Jan _2 15:04:05 MST 2006" дает "Sat Mar 7 11:06:39 PST 2015"
AM/PM "3PM==3pm==15h" дает "11AM==11am==11h"
Без дробной части "Mon Jan _2 15:04:05 MST 2006" дает "Sat Mar 7 11:06:39 PST 2015"
0 для дробной части "15:04:05.00000" дает "11:06:39.12340"
9 для дробной части "15:04:05.99999999" дает "11:06:39.1234"
Читайте также:
- Пакет time в Golang, тип Time, методы After, Before, Equal, IsZero
- Пакет time в Golang, функции Date, Now, Unix
- Пакет time в Golang, тип Time, методы Date, Clock, Day
Комментариев нет:
Отправить комментарий