Menu
CoddyTech

Получение текущего времени

Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 58 из 68.

При работе с датами и временем в программах на Go вам понадобится встроенный пакет time. Этот пакет предоставляет все необходимые функции для работы с операциями, связанными со временем.

Чаще всего начинают с получения текущего времени. В Go это просто сделать с помощью функции time.Now():

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println(now)
}

Функция time.Now() возвращает объект time.Time, представляющий текущий момент времени. При выводе этого объекта отображаются дата и время в удобном для чтения формате, включая информацию о часовом поясе.

Этот объект time.Time содержит всю информацию об этом конкретном моменте времени: год, месяц, день, час, минуту, секунду и даже наносекунды. Он станет основой для всех остальных операций со временем в Go.

challenge icon

Задание

Легко

Создай приложение для учета времени, которое фиксирует текущее время и отображает его в нескольких форматах. Это задание проверит твоё умение использовать функцию time.Now() и работать с объектами time.Time, чтобы извлекать различные компоненты текущего момента.

Ты получишь один входной параметр:

  • Строка, содержащая запросы форматов отображения, разделённые запятыми, в формате "format1,format2,format3" (например, "full,date,time,year,month,day")

Твоя задача:

  1. Использовать time.Now(), чтобы зафиксировать текущее время и сохранить его в переменной
  2. Вывести заголовок приложения: "=== TIME TRACKER APPLICATION ==="
  3. Вывести подтверждение фиксации временной метки: "Current time captured successfully"
  4. Разобрать входную строку, разделив её по запятым, чтобы получить отдельные запросы форматов
  5. Вывести заголовок форматов: "Displaying time in requested formats:"
  6. Для каждого запроса формата вывести информацию о времени в соответствии с указанным форматом:
    • Для "full": вывести "Full timestamp: [complete_time_object]"
    • Для "date": вывести "Date only: [year]-[month]-[day]" (использовать компоненты метода Date())
    • Для "time": вывести "Time only: [hour]:[minute]:[second]" (использовать методы Hour(), Minute(), Second())
    • Для "year": вывести "Year: [year_value]" (использовать метод Year())
    • Для "month": вывести "Month: [month_name]" (использовать метод Month())
    • Для "day": вывести "Day: [day_value]" (использовать метод Day())
    • Для "weekday": вывести "Weekday: [weekday_name]" (использовать метод Weekday())
    • Для "unix": вывести "Unix timestamp: [unix_seconds]" (использовать метод Unix())
  7. Подсчитать и вывести статистику:
    • "=== TIME INFORMATION SUMMARY ==="
    • "Total formats displayed: [number_of_formats]"
    • "Timestamp components extracted: [number_of_unique_components]"
  8. Вывести дополнительные сведения о времени:
    • "Additional time details:"
    • "- Nanoseconds: [nanosecond_value]" (использовать метод Nanosecond())
    • "- Location: [timezone_location]" (использовать метод Location())
    • "- Is zero time: [true_or_false]" (использовать метод IsZero())
  9. Вывести сообщение о завершении: "Time tracking completed - all requested formats processed"

Используй пакет time для работы с объектами времени, пакет strings для разделения входной строки и пакет fmt для форматированного вывода. Помни, что time.Now() возвращает объект time.Time, содержащий всю информацию о текущем моменте, а извлекать отдельные компоненты можно с помощью различных методов этого объекта. Это задание демонстрирует, как зафиксировать текущее время и извлечь разные сведения из одного объекта time.Time.

Попробуйте сами

package main

import (
	"fmt"
	"strings"
	"time"
)

func main() {
	// Считайте входные данные
	var formatRequests string
	fmt.Scanln(&formatRequests)
	
	// Используйте фиксированное время для стабильного вывода (эталонное время Go)
	// Вместо time.Now() используйте time.Date для предсказуемых результатов
	currentTime := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
	
	// Разделите запросы на форматирование
	formats := strings.Split(formatRequests, ",")
	
	// TODO: Напишите свой код ниже
	// Выведите заголовок приложения
	// Выведите подтверждение получения временной метки
	// Выведите заголовок списка форматов
	// Обработайте каждый запрос на форматирование и выведите соответствующий результат
	// Используйте map для учёта уникальных компонентов при подсчёте
	// Используйте подходящее форматирование (например, %02d для чисел с ведущими нулями)
	// Выведите сводную статистику
	// Выведите дополнительные сведения о времени
	// Выведите сообщение о завершении
	
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Go