ホームページ >バックエンド開発 >Golang >Go の time.Format() で使用可能なタイム ゾーンのリストを取得するにはどうすればよいですか?

Go の time.Format() で使用可能なタイム ゾーンのリストを取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-01 09:43:10668ブラウズ

How Can I Get a List of Usable Time Zones for Go's time.Format()?

Go の time.Format() で使用可能なタイム ゾーンのリストを取得する

ユーザーにタイム ゾーンを選択する便利な方法を提供するためアプリケーションでは、ドロップダウンに有効なタイムゾーンのリストを入力する必要がある場合があります。このリストは、Go の簡単な方法で生成できます。

解決策:

時間とともに使用できる、一般的にサポートされているタイム ゾーンの包括的なリストを取得します。 Format() 関数では、次のような関数を使用できます。コード:

package main

import (
    "fmt"
    "os"
    "strings"
)

var zoneDirs = []string{
    // Update path according to your OS
    "/usr/share/zoneinfo/",
    "/usr/share/lib/zoneinfo/",
    "/usr/lib/locale/TZ/",
}

var zoneDir string

func main() {
    for _, zoneDir = range zoneDirs {
        ReadFile("")
    }
}

func ReadFile(path string) {
    files, _ := os.ReadDir(zoneDir + path)
    for _, f := range files {
        if f.Name() != strings.ToUpper(f.Name()[:1]) + f.Name()[1:] {
            continue
        }
        if f.IsDir() {
            ReadFile(path + "/" + f.Name())
        } else {
            fmt.Println((path + "/" + f.Name())[1:])
        }
    }
}

説明:

  • このコードは、有効なタイム ゾーンを見つけるために、潜在的なタイム ゾーン ディレクトリをループします。
  • それは次のようになります。ディレクトリの内容を無視し、大文字と小文字が混在するエントリを無視します。
  • エントリがディレクトリの場合、 ReadFile 関数を再帰的に呼び出して検索を続けます。
  • タイム ゾーン名は先頭のスラッシュなしで出力されます。

出力:

実行コードは次のようなタイム ゾーン名のリストを生成します。

Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
...

を組み込むことができます。このリストを HTML テンプレートに追加すると、使いやすいタイムゾーン選択機能が実現します。

以上がGo の time.Format() で使用可能なタイム ゾーンのリストを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。