10

DateTimeFormatInfo曜日を 2 文字に変換する書式パターンはありますか? たとえば、火曜日は Tu になり、水曜日は We になります。DateTimeFormatInfo フォーマット文字列は、日付フォーマットに準拠する必要があります。

添加:

DateTimeFormatInfoカスタムフォーマットを含むように拡張するソリューションを探しているのでしょうか?

4

4 に答える 4

22

あなたが得ることができる終わりは、"ddd" カスタムフォーマット指定子です- これは3文字の略語を生成するので、あなたが望むものではありません. あなたが望むことを正確に行うものは何も組み込まれていません。

その最初の 2 文字はいつでも取得できます。

DateTime.Now.ToString("ddd").Substring(0,2);

DateTimeFormatInfo残念ながら、 として宣言されているため、拡張できませんsealed

于 2010-06-16T19:25:20.897 に答える
5

使用しているカルチャを取得してDateTimeFormatInfoから、と呼ばれる文字列の配列を変更する必要がありますAbbreviatedDayNames。その後、あなたのためdddに戻りThます。

http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.abbreviateddaynames(VS.71).aspx

DateTimeFormatInfo.AbbreviatedDayNames
曜日のカルチャ固有の省略名を含むString型の1次元配列を取得または設定します。

これを行う方法のサンプルを次に示します。

class Program
{
    static void Main()
    {
        var dtInfo = new System.Globalization.DateTimeFormatInfo();            
        Console.WriteLine("Old array of abbreviated dates:");
        var dt = DateTime.Today;
        for (int i = 0; i < 7; i++)
        {
            Console.WriteLine(dt.AddDays(i).ToString("ddd", dtInfo));
        }

        // change the short weekday names array
        var newWeekDays = 
            new string[] { "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" };
        dtInfo.AbbreviatedDayNames = newWeekDays;

        Console.WriteLine("New array of abbreviated dates:");
        for (int i = 0; i < 7; i++)
        {
            Console.WriteLine(dt.AddDays(i).ToString("ddd", dtInfo));
        }

        Console.ReadLine();
    }
}

もう1つの注意:もちろん、の提供が制限されている場合はIFormatProvider、現在のスレッドのをオーバーライドできます。次にCultureInfo例を示します。

CultureInfo customCulture = CultureInfo.CreateSpecificCulture("en-US");
// ... set up the DateTimeFormatInfo, etc...

System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;




CurrentCultureの詳細:

http://msdn.microsoft.com/en-us/library/system.threading.thread.currentuiculture.aspx

Thread.CurrentUICultureプロパティ
実行時にカルチャ固有のリソースを検索するためにリソースマネージャによって使用される現在のカルチャを取得または設定します。

于 2010-06-17T08:19:21.433 に答える
1

これを試して

string s = DateVar.ToString("ddd").SubString(0,2);

FormatPattern にする必要がある場合は、次のようにしてください。

var dtFI = new CultureInfo( "en-US", false).DateTimeFormat;
dtFI.DayNames = new[] {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su" };
string s = DateVar.ToString("ddd", dtFI);
于 2010-06-16T19:25:50.803 に答える
1

DateTimeFormatInfo を具体的に使用するには、次のことができます

dtfi.GetShortestDayName(DateTime.Now.DayOfWeek);

ただし、「ddd」は、文字列形式で得られる最も近いものです

于 2010-06-16T19:30:34.113 に答える