Menu
Coddy logo textTech

현재 시간 가져오기

Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 58번째.

Go 프로그램에서 날짜와 시간을 다룰 때, 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의 다른 모든 시간 작업의 기초로 사용하게 될 것입니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

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 객체에서 다양한 정보를 추출하는 방법을 보여줍니다.

치트 시트

Go에서 날짜와 시간을 다루려면 time 패키지를 임포트하세요:

import "time"

time.Now()를 사용하여 현재 시간을 가져옵니다:

now := time.Now()
fmt.Println(now)

time.Now() 함수는 연, 월, 일, 시, 분, 초, 나노초 및 시간대 정보를 포함하여 현재 순간을 나타내는 time.Time 객체를 반환합니다.

메서드를 사용하여 time.Time 객체에서 특정 구성 요소를 추출합니다:

now := time.Now()
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
nanosecond := now.Nanosecond()
weekday := now.Weekday()
unix := now.Unix()
location := now.Location()
isZero := now.IsZero()

직접 해보기

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: 아래에 코드를 작성하세요
	// 애플리케이션 헤더 표시
	// 타임스탬프 캡처 확인 표시
	// 형식 헤더 표시
	// 각 형식 요청을 처리하고 그에 따라 표시
	// 카운팅을 위해 고유 컴포넌트를 추적하는 맵 사용
	// 적절한 포맷팅 사용 (예: 제로 패딩 숫자를 위한 %02d)
	// 요약 통계 표시
	// 추가 시간 세부 정보 표시
	// 완료 메시지 표시
	
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 & 흐름의 모든 레슨