6

DateTimeを、省略形の月名とグラフの軸ラベルで使用する日付を含む文字列にフォーマットしたいと思います。

デフォルトのDateTime形式の文字列には、省略形の月は含まれていません。標準はないと思いますが、月の名前の最初の3文字の部分文字列を取得して、これをMonthDay形式に置き換えることができます。MonthDayを使用する理由は、月と日付の順序がロケールに依存するためです。

誰かもっと良いアイデアがありますか?

http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#MonthDay

4

6 に答える 6

22

パターンを取得して「MMMM」を「MMM」に置き換えることができますMonthDay。次に、そのパターンを適用します。

string pattern = CultureInfo.CurrentCulture.DateTimeFormat.MonthDayPattern;
pattern = pattern.Replace("MMMM", "MMM");
string formatted = dateTime.ToString(pattern);

やや粗雑ですが、うまくいくと思います。

于 2010-05-07T08:44:13.383 に答える
1

カスタム文字列フォーマッタを使用して、これを行うことができます。

DateTime now = DateTime.Now;
Console.WriteLine("{0}", now.ToString("ddd MMMM dd"));

詳細については、リンク先のページの「標準形式の文字列のしくみ」のセクションを参照してください。

于 2010-05-07T08:44:30.263 に答える
1

Date.ToString()メソッドでCultureInfoを渡すことができます。特定のカルチャ情報があるか、CultureInfo.CurrentCultureを使用できます。

var date = DateTime.Now;
var ci = new CultureInfo("de-CH");
var output = date.ToString("d MMM", ci);
于 2015-10-08T09:06:04.353 に答える
0

編集済み:を使用しdate.ToString("d MMM")ます。9月7日が表示されます。

于 2010-05-07T08:39:29.383 に答える
0

これは、ローカライズされたバージョンが必要な同様の状況に対して私が思いついた解決策です01/29

Regex.Replace(c.DateTimeFormat.ShortDatePattern, @"(yy(yy)?[/\.\- ]|[/\.\- ]yy(yy)?)", "")

これがすべてのカルチャのフォーマット出力であるため、それが機能するかどうかを確認できます。

CultureInfo.GetCultures(CultureTypes.AllCultures)
    .Select(c => new {
        c.Name,
        c.DateTimeFormat.MonthDayPattern,
        c.DateTimeFormat.ShortDatePattern,
        DayMonth1 = Regex.Replace(c.DateTimeFormat.ShortDatePattern, @"[/\.\- ]?yy[/\.\- ]?", ""),
        DayMonth2 = Regex.Replace(c.DateTimeFormat.ShortDatePattern, @"(yyyy[/\.\- ]|[/\.\- ]yyyy|yy[/\.\- ]|[/\.\- ]yy)", ""),
        DayMonth3 = Regex.Replace(c.DateTimeFormat.ShortDatePattern, @"(yy(yy)?[/\.\- ]|[/\.\- ]yy(yy)?)", "")
    })
    .OrderBy(x => x.Name)
    .Dump();

置換により、いくつかのカルチャ(具体的には「bg」)のDateMonth1余分なパディング文字が削除されます。

于 2013-08-27T21:48:59.417 に答える
-1

迅速、簡単、そして仕事をします。

CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Month).Substring(0,3);
于 2015-01-17T05:58:45.277 に答える