Menu
Coddy logo textTech

現在時刻の取得

CoddyのGOジャーニー「論理とフロー」セクションの一部 — レッスン 58/68。

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 オブジェクトを操作して、現在の瞬間のさまざまなコンポーネントを抽出する能力をテストします。

1つの入力を受け取ります:

  • "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腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン