Logtail を設定して高精度な時刻データを解析・保存すると、Simple Log Service (SLS) でナノ秒精度のタイムスタンプ収集が有効になります。収集されたタイムスタンプは、秒精度の __time__ フィールドとナノ秒オフセットの __time_ns_part__ フィールドの 2 つのフィールドとして保存されるため、厳密な時系列順でのログのソートと分析が可能になります。
前提条件
ナノ秒精度のタイムスタンプ収集を設定する前に、お使いの環境が次の要件を満たしていることを確認してください:
オペレーティングシステム:Linux のみ。この機能は Windows ではサポートされていません。Windows サーバーに適用した設定は有効になりません。
Logtail バージョン:LoongCollector (Logtail) 1.8.0 以降。
SLS リソース:プロジェクトと Logstore。
ユースケース
ナノ秒精度のタイムスタンプは、秒レベルの精度では不十分なシナリオにおいて不可欠です。
分散トレーシング: サービス間のスパンをサブミリ秒の精度で関連付け、レイテンシーのボトルネックを特定します。
高頻度取引: マイクロ秒の差が因果関係を決定するトランザクションログで、厳密なイベントの順序を維持します。
パフォーマンスプロファイリング: 詳細なタイミングデータを分析し、秒レベルのタイムスタンプでは識別できないパフォーマンスの異常を検出します。
厳密なログの順序: 同じ秒内に発生する大量のログイベントの正確なシーケンスを保持します。
仕組み
LoongCollector (Logtail) は、標準の秒精度タイムスタンプに加えてナノ秒オフセットを保存することで、ナノ秒精度のタイムスタンプを収集します。この設計により、既存の秒ベースの時刻システムとの互換性を維持しつつ、高精度なソートが可能になります。
収集ワークフローは、次のとおりです:
ナノ秒サポートの有効化:Logtail の収集設定の詳細パラメーターで、
{ "EnableTimestampNanosecond": true }を設定します。ログの解析:プロセッサー (デリミタ、 JSON 、または正規表現) を使用して、生ログから高精度の時刻文字列を抽出します。
時刻の変換:時刻解析プロセッサーは、時刻文字列を標準時刻フォーマットに変換します。
時刻の保存:SLS は時刻を 2 つのフィールドに分割して保存します:
__time__:標準の UNIX タイムスタンプ (long 型整数)、秒単位。__time_ns_part__:ナノ秒オフセット (long 型整数)。有効な値:0~999,999,999。
クエリと分析:
__time__と__time_ns_part__の組み合わせでソートし、厳密な時系列に沿ったログ分析を実行します。
操作手順
このセクションでは、ナノ秒精度のタイムスタンプを含む JSON ログを使用する、エンドツーエンドの完全なワークフローを説明します。このワークフローには、ログの収集、解析、インデックス設定、クエリ、分析が含まれます。
手順 1:プロジェクトと Logstore の作成
すでにプロジェクトと Logstore がある場合は、手順 2:マシングループの設定と LoongCollector のインストールに進んでください。
そうでない場合は、ログを管理および保存するためのリソースを作成します。
Simple Log Service (SLS) コンソールにログインします。
プロジェクトの作成 をクリックし、次のパラメーターを設定します。
リージョン: ログの発生元に基づいてリージョンを選択します。プロジェクト作成後にリージョンは変更できません。
プロジェクト名: Alibaba Cloud 内でグローバルに一意の名前を入力します。プロジェクト作成後に名前は変更できません。
他のパラメーターはデフォルト設定のままにして、[作成] をクリックします。詳細については、「プロジェクトの管理」をご参照ください。
プロジェクト名をクリックして、プロジェクトに移動します。
左側メニューで、
[ログ管理] を選択し、+ をクリックします。[Logstore の作成] ページで、次のパラメーターを設定します。
[Logstore 名]: プロジェクト内で一意の名前を設定します。Logstore 作成後に名前は変更できません。
[Logstore タイプ]: 仕様比較に基づいて、Standard または Query を選択します。
[課金モード]:
[使用機能に基づく課金]: ストレージ、インデックス、読み書き操作など、リソースごとに個別に課金されます。このモードは、小規模なシナリオや、機能の使用量がまだ不確かなシナリオに適しています。
[書き込みデータ量課金]: 取り込まれた生データに対してのみ課金されます。このモードには、30 日間の無料ストレージ期間と、データ変換や配信などの無料機能が含まれています。コストモデルがシンプルで、ストレージ期間が 30 日に近いシナリオや、データ処理パイプラインが複雑なシナリオに適しています。
[Data Retention Period]: ログを保持する日数を設定します。有効な値:1~3,650。値 3,650 は永続的な保持を示します。デフォルト値:30。
他のパラメーターはデフォルト設定のままにして、OK をクリックします。詳細については、「Logstore の管理」をご参照ください。
手順 2:マシングループの設定と LoongCollector のインストール
サーバーに LoongCollector をインストールし、サーバーをマシングループに追加します。このトピックでは、LoongCollector がインストールされた Elastic Compute Service (ECS) インスタンスを例として使用します。この場合、ECS インスタンスと SLS プロジェクトは同じ Alibaba Cloud アカウントとリージョンに属します。ECS インスタンスとプロジェクトが同じアカウントまたはリージョンに属していない場合、または自己管理型サーバーを使用する場合は、LoongCollector のインストールを参照して、コレクターを手動でインストールしてください。
[Logstores]
ページで、
対象の Logstore 名の前にある
をクリックして展開します。[データのインポート] の横にある
をクリックします。表示されたダイアログボックスで、テキストログテンプレートを選択します。このトピックでは、[単一行 - テキストログ] テンプレートを例として使用します。今すぐ統合 をクリックします。すべてのテキストログテンプレートは、解析プロセッサーのみが異なり、残りの設定プロセスは同じです。後ですべての設定を変更できます。
設定手順:
サーバグループ設定 ページで、次のパラメーターを設定します。
[使用シナリオ]: [ホストシナリオ]
[インストール環境]: ECS
マシングループの設定: 対象サーバーの LoongCollector のインストールステータスとマシングループのステータスに合わせてアクションを選択します。
LoongCollector がすでにインストールされており、サーバーがすでにマシングループに属している場合は、ソースサーバーグループ リストからグループを選択し、適用されたサーバーグループ リストに追加します。グループを再度作成する必要はありません。
LoongCollector がインストールされていない場合は、マシングループの作成 をクリックします。 次の手順では、LoongCollector の自動インストールと新しいマシングループの作成について説明します。
システムは、プロジェクトと同じリージョンにある ECS インスタンスを自動的にリストアップします。ログを収集するインスタンスを 1 つ以上選択します。
マシングループとしてインストールおよび作成する をクリックします。システムは、選択した ECS インスタンスに LoongCollector を自動的にインストールします。
マシングループの 名前 を設定し、OK をクリックします。 インストールが失敗した場合、または待機状態のままの場合は、ECS インスタンスがプロジェクトと同じリージョンにあるかどうかを確認してください。
LoongCollector がすでにインストールされているサーバーを既存のマシングループに追加するには、FAQ トピック 「既存のマシングループにサーバーを追加するにはどうすればよいですか?」 をご参照ください。
手順 3:収集設定の作成
コンソールでの設定: Logtail 設定 ページに移動して、ログの収集と処理のルールを定義します。
1. ナノ秒精度サポートの有効化 ログソースと収集ルールを定義し、ナノ秒精度サポートを有効にします。
[グローバル設定]:
[設定名]: プロジェクト内で一意の名前を設定します。設定作成後に名前は変更できません。
[その他のグローバル設定]: [詳細設定] スイッチをオンにし、次の JSON コンテンツを入力してナノ秒精度サポートを有効にします。
{
"EnableTimestampNanosecond": true
}[入力設定]:
[タイプ]: [テキストログ収集]。
[ファイルパス]: ログが収集されるパス。
Linux:スラッシュ (/) で始まります。たとえば、
/data/mylogs/**/*.logは/data/mylogsディレクトリ内の .log 拡張子を持つすべてのファイルを指定します。Windows:ドライブ文字で始まります。例:
C:\Program Files\Intel\**\*.Log。
[ディレクトリ監視の最大深度]: ファイルパス の
**ワイルドカードがマッチする最大ディレクトリ深度です。デフォルト値:0 (現在のディレクトリのみを監視)。2. プロセッサーの設定 ソースログは JSON 形式であるため、[処理手順] セクションで JSON 解析 プロセッサーを追加します。このプロセッサーは、JSON 形式の生ログを解析し、複数の独立したフィールド (キーと値のペア) に分割します。
ログサンプルの追加
ログファイルに次の形式のログが含まれていると仮定します。ここで、
asctimeフィールドにはナノ秒精度のタイムスタンプが含まれています。
{
"asctime": "2023-10-25 23:51:10,199999999",
"filename": "generate_data.py",
"levelname": "INFO",
"lineno": 51,
"module": "generate_data",
"message": "{\"no\": 14, \"inner_loop\": 166, \"loop\": 27451, \"uuid\": \"9be98c29-22c7-40a1-b7ed-29ae6c8367af\"}",
"threadName": "MainThread"
}JSON 解析プロセッサーの追加
処理プラグインの追加 をクリックし、ネイティブ処理プラグイン > JSON 解析 を選択し、確認 をクリックします。
時間解析プロセッサーの追加
前の手順で抽出した時刻文字列 (
asctimeフィールド) を標準のナノ秒タイムスタンプに変換し、ログのイベント時刻として使用します。
プロセッサー名 | コア機能 | ユースケース |
時間解析 | 基本的な時間解析 | 固定フォーマットのシンプルなシナリオ |
時間 - Strptime | 柔軟で、幅広い | 推奨。業界標準と互換性のある包括的な機能 |
時間 - Go | Go 標準ライブラリのフォーマットを使用 | Go に精通している、またはログ形式が Go 標準ライブラリと一致するシナリオ |
時間解析
処理プラグインの追加 をクリックし、ネイティブ処理プラグイン > [時間解析] を選択し、次のパラメーターを設定します。
[元のフィールド]: ログが解析される前に時刻を格納する元のフィールド。この例では、フィールドは
asctimeです。[時間形式]: ログの時刻フィールドの内容と一致する時間フォーマットを設定します。この例では、フォーマットは
%Y-%m-%d %H:%M:%S,%fで、%fは秒の小数部で、ナノ秒精度までサポートします。
時刻フォーマット文字列は、, や . といった秒とナノ秒の間の区切り文字を含め、生ログ内の時刻フォーマットと一致させる必要があります。そうしないと、ログを正しく解析できません。
[タイムゾーン]: ログの時刻フィールドのタイムゾーンを選択します。デフォルトでは、サーバーのタイムゾーンが使用されます。
時間 - strptime
処理プラグインの追加 をクリックし、拡張処理プラグイン > [時間 - Strptime] を選択し、次のパラメーターを設定します。
[元のフィールド]: ログが解析される前に時刻を格納する元のフィールド。この例では、フィールドは
asctimeです。[元の時間形式]: ログの時刻フィールドの内容と一致する時間フォーマットを設定します。この例では、フォーマットは
%Y-%m-%d %H:%M:%S,%fで、%fは秒の小数部で、ナノ秒精度までサポートします。
時刻フォーマット文字列は、秒とナノ秒の間の区切り文字 (, や . など) を含め、生ログ内の時刻フォーマットと同一でないと、ログを正しく解析できません。
時間 - Go
処理プラグインの追加 をクリックし、拡張処理プラグイン > [時間 - Go] を選択し、次のパラメーターを設定します。
[元の時間フィールド]: ログが解析される前に時刻を格納する元のフィールド。この例では、フィールドは
asctimeです。[元の時間形式]: 生ログの時刻フィールドと一致する時間フォーマットを設定します。Go の時間フォーマット仕様に基づいてフォーマットを記述します。時間フォーマットテンプレートは、Go 言語の基準時刻である
2006-01-02 15:04:05 -0700 MSTです。この例の時間フォーマットは2006-01-02 15:04:05,999999999です。
時刻フォーマット文字列は、, や . などの秒とナノ秒の区切り文字を含め、生ログ内の時刻フォーマットと同一である必要があります。そうでない場合、ログを正しくパースできません。
[結果時間フィールド]: ログが解析された後に時刻を格納するターゲットフィールド。この例では、フィールドは
result_asctimeです。[結果時間形式]: ログが解析された後の時間フォーマット。Go の時間フォーマット仕様に基づいてフォーマットを記述します。この例では、フォーマットは
2006-01-02 15:04:05,999999999Z07:00です。
3. インデックスの設定 Logtail の設定が完了したら、次へ をクリックします。クエリと分析の設定 ページが表示されます。
システムはデフォルトで全文インデックスを有効にします。これにより、生ログコンテンツ内のキーワード検索が可能になります。
フィールドごとに正確なクエリを実行するには、ページに[プレビューデータ] が読み込まれるまで待ってから、自動インデックスの生成 をクリックします。SLS は、プレビューデータの最初のエントリに基づいてフィールドインデックスを生成します。
設定が完了したら、次へ をクリックして、収集プロセス全体の設定を完了します。
CRD を使用した設定 (Kubernetes シナリオ) ACK クラスターまたは自己管理型 Kubernetes クラスターでは、AliyunLog CRD を使用してナノ秒精度タイムスタンプの収集を設定できます。次の YAML コンテンツをファイルに保存し、kubectl apply -f <filename> を実行して設定を適用します。次のサンプルに、3 つのプロセッサーの設定例を示します。
時間解析
apiVersion: telemetry.alibabacloud.com/v1alpha1
kind: ClusterAliyunPipelineConfig
metadata:
name: ${your-config-name}
spec:
config:
aggregators: []
global:
EnableTimestampNanosecond: true
inputs:
- Type: input_file
FilePaths:
- /test/sls/json_nano.log
MaxDirSearchDepth: 0
FileEncoding: utf8
EnableContainerDiscovery: true
processors:
- Type: processor_parse_json_native
SourceKey: content
- Type: processor_parse_timestamp_native
SourceKey: asctime
SourceFormat: '%Y-%m-%d %H:%M:%S,%f'
flushers:
- Type: flusher_sls
Logstore: ${your-logstore-name}
sample: |-
{
"asctime": "2025-11-03 15:39:14,229939478",
"filename": "log_generator.sh",
"levelname": "INFO",
"lineno": 204,
"module": "log_generator",
"message": "{\"no\": 45, \"inner_loop\": 15, \"loop\": 1697, \"uuid\": \"80366fca-a57d-b65a-be07-2ac1173505d9\"}",
"threadName": "MainThread"
}
project:
name: ${your-project-name}
logstores:
- name: ${your-logstore-name}時間 - strptime
apiVersion: telemetry.alibabacloud.com/v1alpha1
kind: ClusterAliyunPipelineConfig
metadata:
name: ${your-config-name}
spec:
config:
aggregators: []
global:
EnableTimestampNanosecond: true
inputs:
- Type: input_file
FilePaths:
- /test/sls/json_nano.log
MaxDirSearchDepth: 0
FileEncoding: utf8
EnableContainerDiscovery: true
processors:
- Type: processor_parse_json_native
SourceKey: content
- Type: processor_strptime
SourceKey: asctime
Format: '%Y-%m-%d %H:%M:%S,%f'
KeepSource: true
AlarmIfFail: true
AdjustUTCOffset: false
flushers:
- Type: flusher_sls
Logstore: ${your-logstore-name}
sample: |-
{
"asctime": "2025-11-03 15:39:14,229939478",
"filename": "log_generator.sh",
"levelname": "INFO",
"lineno": 204,
"module": "log_generator",
"message": "{\"no\": 45, \"inner_loop\": 15, \"loop\": 1697, \"uuid\": \"80366fca-a57d-b65a-be07-2ac1173505d9\"}",
"threadName": "MainThread"
}
project:
name: ${your-project-name}
logstores:
- name: ${your-logstore-name}時間 - Go
apiVersion: telemetry.alibabacloud.com/v1alpha1
kind: ClusterAliyunPipelineConfig
metadata:
name: ${your-config-name}
spec:
config:
aggregators: []
global:
EnableTimestampNanosecond: true
inputs:
- Type: input_file
FilePaths:
- /test/sls/json_nano.log
MaxDirSearchDepth: 0
FileEncoding: utf8
EnableContainerDiscovery: true
processors:
- Type: processor_parse_json_native
SourceKey: content
- Type: processor_gotime
SourceKey: asctime
SourceFormat: '2006-01-02 15:04:05,999999999'
DestKey: result_asctime
DestFormat: '2006-01-02 15:04:05,999999999Z07:00'
SetTime: true
KeepSource: true
NoKeyError: true
AlarmIfFail: true
flushers:
- Type: flusher_sls
Logstore: ${your-logstore-name}
sample: |-
{
"asctime": "2025-11-03 15:39:14,229939478",
"filename": "log_generator.sh",
"levelname": "INFO",
"lineno": 204,
"module": "log_generator",
"message": "{\"no\": 45, \"inner_loop\": 15, \"loop\": 1697, \"uuid\": \"80366fca-a57d-b65a-be07-2ac1173505d9\"}",
"threadName": "MainThread"
}
project:
name: ${your-project-name}
logstores:
- name: ${your-logstore-name}CRD 設定を適用した後、Logstore にナノ秒精度のタイムスタンプを持つログが着信していることを確認し、収集設定が有効であることを検証します。
手順 4:結果の検証
設定が完了したら、新しいログデータが Logstore に収集されるまでしばらく待ちます。
SLS のクエリと分析ページで、収集されたログを表示します。コンソールは、高精度の時刻情報に基づいて表示を自動的に最適化し、時刻をミリ秒、マイクロ秒、またはナノ秒形式で表示します。
ログクエリの結果では、タイムスタンプは 2025-11-03 17:34:40.747598929 のような形式で表示されます。
ナノ秒精度が正しく機能していることを確認するには、クエリを実行して __time_ns_part__ フィールドを確認します。
* | SELECT __time__, __time_ns_part__, * FROM log WHERE __time_ns_part__ > 0 ORDER BY __time__, __time_ns_part__ LIMIT 10クエリが、0~999,999,999 の範囲の __time_ns_part__ 値を含む結果を返した場合、ナノ秒精度は有効であり、正しく機能しています。__time_ns_part__ フィールドが空であるか、ゼロのみを含む場合は、収集設定を見直して、次のことを確認してください。
[詳細設定] スイッチがオンになっており、
{ "EnableTimestampNanosecond": true }が含まれていること。時間解析プロセッサーが、生ログのタイムスタンプと一致する正しい時間フォーマットで設定されていること。
サーバー上の Logtail のバージョンが 1.8.0 以降であること。
よくある質問
収集したログ内のナノ秒タイムスタンプが正しく解析されないのはなぜですか?
収集設定の完了後、高精度時刻が想定どおりに抽出されません。
ログビューアのインデックス時刻は 10-26 00:30:39 ですが、ログレコードの asctime は 2023-10-26 00:30:10,199999999 です。2つの値が一致していないため、高精度時刻が正しく抽出されていないことを示しています。ログレコードの詳細は次のとおりです:
__file_offset__ xxx
__tag__ xxx
asctime: 2023-10-26 00:30:10,199999999
filename: xxx
levelname: INFO
lineno: 51
message: {"no": 14, "inner_loop": 166, "loop": 27451, "uuid": "9be98c29-22c7-40a1-b7ed-29ae6c8367af"}
module: generate_data
threadName: MainThread原因
プロセッサーモードは %f をサポートしていますが、時刻フォーマットはソース時刻の表記と完全に一致させる必要があります。
解決策
LoongCollector (Logtail) サーバーにログインし、ログを確認します。STRPTIME_PARSE_ALARM の例外ログが大量に出力されていることが分かります。
tail -f /usr/local/ilogtail/logtail_plugin.LOG 2023-10-26 00:30:39 [WRN] [strptime.go:164] [processLog] [##1.0##xxxx,xxx] AlarmType:STRPTIME_PARSE_ALARM strptime(2023-10-26 00:30:10,199999999, %Y-%m-%d %H:%M:%S %f) failed: 0001-01-01 00:00:00 +0000 UTC, <nil>プロセッサーのログ解析フォーマットを変更します。
生ログでは、時刻は
2023-10-26 00:30:10,199999999であり、秒と高精度時刻 (この例ではナノ秒) の間の区切り文字はカンマ (,) です。一方、解析フォーマット%Y-%m-%d %H:%M:%S %fでは、秒と高精度時刻の間の区切り文字は半角スペースです。この問題を修正するには、収集設定の時刻変換フォーマットを%Y-%m-%d %H:%M:%S,%fに変更します。
課金と制限
コストへの影響:
__time_ns_part__フィールドはログの内容の一部として保存されるため、生ログのストレージ使用量が増加します。コスト増分はログ量に比例します。実際のログの取り込みレートと保持期間に基づいて、ストレージコストを評価してください。環境制限:この機能は、Linux 上の Logtail 1.8.0 以降でのみサポートされています。Windows では設定が有効になりません。
リファレンス
付録 1:一般的なログ時刻フォーマット
Linux サーバーでは、Logtail は strftime 関数が提供するすべての時刻フォーマットをサポートしています。strftime 関数でフォーマットできるログ時刻文字列はすべて、Logtail で解析して使用できます。
時刻フォーマット | 説明 | 例 |
%a | 曜日名の短縮形。 | Fri |
%A | 曜日名の完全形。 | Friday |
%b | 月名の短縮形。 | Jan |
%B | 月名の完全形。 | January |
%d | 日 (月単位)、10 進数。有効な値:01~31。 | 07, 31 |
%f | 秒の小数部 (ミリ秒、マイクロ秒、またはナノ秒)。 | 123456789 |
%h | 月名の短縮形。%b と同等です。 | Jan |
%H | 時 (24 時間形式)。 | 22 |
%I | 時 (12 時間形式)。 | 11 |
%m | 月、10 進数。有効な値:01~12。 | 08 |
%M | 分、10 進数。有効な値:00~59。 | 59 |
%n | 改行。 | 改行 |
%p | AM または PM。 | AM, PM |
%r | 12 時間形式の時刻。%I:%M:%S %p と同等です。 | 11:59:59 AM |
%R | 時と分。%H:%M と同等です。 | 23:59 |
%S | 秒、10 進数。有効な値:00~59。 | 59 |
%t | タブ文字。 | N/A |
%y | 年の下 2 桁、10 進数。有効な値:00~99。 | 04, 98 |
%Y | 年、10 進数。 | 2004, 1998 |
%C | 世紀、10 進数。有効な値:00~99。 | 16 |
%e | 日 (月単位)、10 進数。有効な値:1~31。1 桁の値は先頭にスペースが付きます。 | 7, 31 |
%j | 日 (年単位)、10 進数。有効な値:001~366。 | 365 |
%u | 曜日、10 進数 (1 は月曜日)。有効な値:1~7。 | 2 |
%U | 年の週番号 (日曜日を週の始まりとする)。有効な値:00~53。 | 23 |
%V | 年の週番号 (月曜日を週の始まりとする)。有効な値:01~53。1 月の最初の週に 4 日以上ある場合は、その週が第 1 週になります。それ以外の場合は、翌週が第 1 週になります。 | 24 |
%w | 曜日、10 進数 (0 は日曜日)。有効な値:0~6。 | 5 |
%W | 年の週番号 (月曜日を週の始まりとする)。有効な値:00~53。 | 23 |
%c | 標準の日付と時刻。 | Tue Nov 20 14:12:58 2020 |
%x | 標準の日付 (時刻なし)。 | Tue Nov 20 2020 |
%X | 標準の時刻 (日付なし)。 | 11:59:59 |
%s | UNIX タイムスタンプ。 | 1476187251 |
時刻フォーマットの例 次の表に、一般的な時刻標準、例、および対応する時刻表現を示します。
例 | 時刻表現 | 時刻標準 |
2017-12-11 15:05:07 | %Y-%m-%d %H:%M:%S | カスタム |
[2017-12-11 15:05:07.012] | [%Y-%m-%d %H:%M:%S.%f] | カスタム |
2017-12-11 15:05:07.123 | %Y-%m-%d %H:%M:%S.%f | カスタム |
02 Jan 06 15:04 MST | %d %b %y %H:%M %Z | RFC822 |
02 Jan 06 15:04 -0700 | %d %b %y %H:%M %z | RFC822Z |
Monday, 02-Jan-06 15:04:05 MST | %A, %d-%b-%y %H:%M:%S %Z | RFC850 |
Mon, 02 Jan 2006 15:04:05 MST | %a, %d %b %Y %H:%M:%S %Z | RFC1123 |
2006-01-02T15:04:05Z07:00 | %Y-%m-%dT%H:%M:%S%z | RFC3339 |
2006-01-02T15:04:05.999999999Z07:00 | %Y-%m-%dT%H:%M:%S.%f%z | RFC3339Nano |
1637843406 | %s | カスタム |
1637843406123 | %s | カスタム (Simple Log Service (SLS) は、秒単位の精度でデータを処理します) |
付録2:Go の時刻フォーマット
次のコードブロックは、Go 言語の公式な時刻フォーマットの一覧です。
const (
Layout = "01/02 03:04:05PM '06 -0700" // 基準時刻、数値順
ANSIC = "Mon Jan _2 15:04:05 2006"
UnixDate = "Mon Jan _2 15:04:05 MST 2006"
RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
RFC822 = "02 Jan 06 15:04 MST"
RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 (数値タイムゾーン付き)
RFC850 = "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 (数値タイムゾーン付き)
RFC3339 = "2006-01-02T15:04:05Z07:00"
RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
Kitchen = "3:04PM" // 便利なタイムスタンプ
Stamp = "Jan _2 15:04:05"
StampMilli = "Jan _2 15:04:05.000"
StampMicro = "Jan _2 15:04:05.000000"
StampNano = "Jan _2 15:04:05.000000000"
)