私は文字列にこの方法日付を変換:ロケールを使用して、日付を文字列に変換するにはどうすればよいですか?
d.Format("Mon 02. Jan")
をし、私は、ロケールを切り替えると、他の言語の文字列を取得できますか
Fri 27. Jan
のような何かを得ますか?
私は文字列にこの方法日付を変換:ロケールを使用して、日付を文字列に変換するにはどうすればよいですか?
d.Format("Mon 02. Jan")
をし、私は、ロケールを切り替えると、他の言語の文字列を取得できますか
Fri 27. Jan
のような何かを得ますか?
できません。 Go標準ライブラリには、ローカライズされた月、日、およびゾーン名が含まれていません。名前はtime
パッケージに配線されています。
は、例えば、Month.String()
によって返されるか月の名前は、アンエクスポートtime.month
グローバル変数に格納されている:
var months = [...]string{
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
}
func (m Month) String() string { return months[m-1] }
同様に、平日の名前はアンエクスポート変数time.days
に格納され、Weekday.String()
から来ます。
あなたのニーズをサポートするサードパーティライブラリが存在する可能性があります。ここではあなたにいくつかの助けになるかもしれない不完全な1です:https://github.com/mattbaird/go-i18n-formats
以下イゴールChubinで共有するように、このサードパーティのlibには、はるかに完全である:https://github.com/variadico/lctime
はまた、一般的な、多言語の時間を提供しながら、フォーマットすることに注意してくださいパッケージは簡単な作業ではなく、本当に必要な場合はtime
パッケージを使用してプロジェクトにコピーし、必要な言語に名前を変換するだけです。
言語の数が少なく、レイアウト数が少ないので、自分で書式を作成するのは簡単です。例えば
、以下のコードは、あなたの質問に使用されるレイアウトを使用して、ハンガリーで与えられたtime.Time
値をフォーマット:
func Format(t time.Time) string {
return fmt.Sprintf("%s %02d. %s",
days[t.Weekday()][:3], t.Day(), months[t.Month()-1][:3],
)
}
var days = [...]string{
"Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat"}
var months = [...]string{
"Január", "Február", "Március", "Április", "Május", "Június",
"Július", "Augusztus", "Szeptember", "Október", "November", "December",
}
テストそれ:Go Playground上
fmt.Println(Format(time.Now()))
出力:
Ked 10. Nov
ローカルマシンの出力:
Pén 27. Jan
私はそれがとても悪いとは思わない。 go for堅牢なi18nパッケージはありませんか? –
@IgorChubin残念ながら、(私が知っている)まだありません。しかし、特定の言語とレイアウトをサポートするには、十分に簡単です。答えに追加されました。 – icza
私はこのライブラリを見つけました:https://github.com/variadico/lctimeこれは私が必要とする機能を持っているようです。ありがとう、icza! –