1

システムの日付形式をフェロー語に変更しました。

G形式(日付と時刻の組み合わせ)のcustomCultureに従って、DateTimeをStringに変換したい

以下のコードを確認してください。

    namespace TestDateConvertion
        {
            class Program
            {
                static void Main(string[] args)
                {
                    object value = new DateTime(2003,12,23,6,22,30);
                    DateTime dateTimeValue = (DateTime)value;
                    CultureInfo customCulture = MySettings.getCustomCulture();  
                                     //for getting custom culture in my app
                                     //in custom culture i have changed shortDateFormat according to the user preference.
                                     //value in shortDateFormat = dd/MM/yyyy




                    string result = string.Format(customCulture, "{0:G}", result);

                    Console.WriteLine(result);
                    Console.ReadLine();
                }
            }
        }

しかし、customCultureでユーザーが指定した形式ではなく、システムのDateTimeに従ってセパレータを使用して出力を取得します。

オーバーロードされたメソッドstring.Format()DateTime.ToString()、これを行うメソッドが見つかりません。

CultureInfo.InvariantCulture を渡すと、G 形式で出力を取得できません。

4

2 に答える 2

1

これを試して:

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("G", DateTimeFormatInfo.InvariantInfo));
// Displays 04/10/2008 06:30:00
Console.WriteLine(date1.ToString("G", CultureInfo.CreateSpecificCulture("en-us")));
// Displays 4/10/2008 6:30:00 AM                        
Console.WriteLine(date1.ToString("G", CultureInfo.CreateSpecificCulture("nl-BE")));
于 2013-07-09T05:15:39.310 に答える
1

標準の日付と時刻の形式文字列によると、「G」は短い日付形式を使用します(指定すると主張します)。そのため、ローカル カルチャ セパレータを使用する最も可能性の高い理由は、「カスタムの日付と時刻の書式指定文字列」の「/」カスタム書式指定子の部分で説明されています。

「短い日付形式」は"dd/MM/yyyy"代わりに"/"、文化情報から対応する区切り記号を使用するためです (デフォルトの文化から選択する可能性があります)。

でのエスケープについて\は、同じ「日付と時刻のカスタム形式の文字列」記事のエスケープ文字の使用部分で説明されています。

したがって、カスタムの対応する部分でDateTimeSeparatorshortDateFormat = @"dd\/MM\/yyyy"を適切に指定する必要があります。CultureInfo

于 2013-07-09T05:16:06.580 に答える