22

日付形式記述子をローカライズするための最良の方法は何ですか?

mm / dd / yyyy形式を使用しない文化の人なら誰でも知っているように、この形式で日付を入力しなければならないのは面倒です。.NET Frameworkは非常に優れたローカリゼーションサポートを提供するため、ユーザーの文化に応じて日付を解析するのは簡単ですが、必要な形式に関する役立つヒントも表示したい場合がよくあります(特に、yyとyyyyを区別するためにほとんどの文化)。

ほとんどのユーザーにとって意味のある方法でこれを行うための最良の方法は何ですか(たとえば、dd / M / yyyは、大文字と小文字の変更と1文字と2文字の切り替えのために混乱します)。

4

7 に答える 7

7

ISO-8601を使用するだけです。これは国際規格です。

Date and time (current at page generation) expressed according to ISO 8601:
Date:                           2014-07-05
Combined date and time in UTC:  2014-07-05T04:00:25+00:00
                                2014-07-05T04:00:25Z
Week:                           2014-W27
Date with week number:          2014-W27-6
Ordinal date:                   2014-186
于 2008-08-03T18:18:54.400 に答える
4

私は、OP の「間違った」日付が私の DD/MM/YYYY の生い立ちと本当に矛盾していることに同意する必要があり、ISO 8601 の日付と時刻は非常に扱いやすいと思います。かつては標準が正しく、engtechはローカリゼーションを必要としないという明白な答えを持っていました。

誕生日の入力フォームのスタック オーバーフローをバグとして報告するつもりでした。これは、世界の大多数にとって非常に厄介な問題だからです。

于 2008-08-04T18:50:34.100 に答える
2

これが私の現在の方法です。助言がありますか?

Regex singleMToDoubleRegex = new Regex("(?<!m)m(?!m)");
Regex singleDToDoubleRegex = new Regex("(?<!d)d(?!d)");
CultureInfo currentCulture = CultureInfo.CurrentUICulture;

// If the culture is netural there is no date pattern to use, so use the default.
if (currentCulture.IsNeutralCulture)
{
    currentCulture = CultureInfo.InvariantCulture;
}

// Massage the format into a more general user friendly form.
string shortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern.ToLower();
shortDatePattern = singleMToDoubleRegex.Replace(shortDatePattern, "mm");
shortDatePattern = singleDToDoubleRegex.Replace(shortDatePattern, "dd");
于 2008-08-03T17:31:31.313 に答える
2

国際標準の問題点は、ほとんど誰もそれを使用していないことです。できる限り試してみますが、実生活のほぼすべての場所で dd/mm/yyyy を使用することを余儀なくされています。ISO-8601 を使おうとすらしない大多数の人々にとって、それはさらに悪いことです。できるところを国際化できれば、それは大きなアドバンテージだと思います。

于 2008-08-04T08:14:56.973 に答える
1

フォーマット(mm / dd/yyyyまたはdd/mm / yyyy)に続いて、ユーザーの文化における今日の日付のプリントアウトを与えるのはどうですか。MSDNには、CultureInfoオブジェクトを使用して、個人のカルチャのDateTimeをフォーマットする方法に関する記事があります。これは、これを行うのに役立つ場合があります。(ほとんどの人が精通している)形式とその形式で表される現在の日付の組み合わせは、日付を入力する方法についての人の手がかりとして十分なはずです。(それでも理解できない人のためのカレンダーコントロールも含めてください)。

于 2008-08-03T17:37:43.063 に答える
1

短い形式は便利で、スペルミスを防ぐのに役立ちます。必要に応じてローカライズしますが、必ず期待される形式を表示してください(ユーザーを盲目にしないでください)。フィールドに入力するためのオプションの補助として、日付ピッカーコントロールを提供します。

さらに、オンザフライでの解析と日付の長い形式での表示も役立つ場合があります。

于 2008-08-04T19:13:17.940 に答える
0

最良の選択肢: 代わりに、標準の日付ピッカーを使用することをお勧めします。

の方法: エディット コントロールのコンテンツが変更されるたびに、それを解析し、(別のコントロールで?) 日付の長い形式を表示します (つまり、「入力 "03/04/09" 表示 "あなたの入力: 2009 年 3 月 4 日" )

于 2008-09-19T17:02:14.677 に答える