DateTimeFormatInfo
曜日を 2 文字に変換する書式パターンはありますか? たとえば、火曜日は Tu になり、水曜日は We になります。DateTimeFormatInfo
フォーマット文字列は、日付フォーマットに準拠する必要があります。
添加:
DateTimeFormatInfo
カスタムフォーマットを含むように拡張するソリューションを探しているのでしょうか?
DateTimeFormatInfo
曜日を 2 文字に変換する書式パターンはありますか? たとえば、火曜日は Tu になり、水曜日は We になります。DateTimeFormatInfo
フォーマット文字列は、日付フォーマットに準拠する必要があります。
添加:
DateTimeFormatInfo
カスタムフォーマットを含むように拡張するソリューションを探しているのでしょうか?
あなたが得ることができる終わりは、"ddd"
カスタムフォーマット指定子です- これは3文字の略語を生成するので、あなたが望むものではありません. あなたが望むことを正確に行うものは何も組み込まれていません。
その最初の 2 文字はいつでも取得できます。
DateTime.Now.ToString("ddd").Substring(0,2);
DateTimeFormatInfo
残念ながら、 として宣言されているため、拡張できませんsealed
。
使用しているカルチャを取得してDateTimeFormatInfo
から、と呼ばれる文字列の配列を変更する必要がありますAbbreviatedDayNames
。その後、あなたのためddd
に戻りTh
ます。
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プロパティ
実行時にカルチャ固有のリソースを検索するためにリソースマネージャによって使用される現在のカルチャを取得または設定します。
これを試して
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);
DateTimeFormatInfo を具体的に使用するには、次のことができます
dtfi.GetShortestDayName(DateTime.Now.DayOfWeek);
ただし、「ddd」は、文字列形式で得られる最も近いものです