2016-08-01 13 views
0

私は次のコードを持っています。静的メソッドを使用しています。date型オブジェクトに接尾辞を追加しようとしています。また、dateを書式設定して文字列として返す私はfolowing結果を取得していますサフィックス付きdateTimeの書式設定

var outputFormat = date.Month != nextDate.Month || isLast ? "d MMMM yyyy" : "dd"; 

if (isLastMonthDay) 
{ 
    formattedDate.AppendFormat("{0}{1}", GetDateSuffix(date, outputFormat), "<br><br>"); 
} 
else 
{ 
    formattedDate.AppendFormat("{0}{1}", GetDateSuffix(date, outputFormat).TrimStart('0'), ", "); 
} 

private static string GetDateSuffix(DateTime date, string outputFormat) 
{ 
    string suffix; 

    switch (date.Day) 
    { 
     case 1: 
     case 21: 
     case 31: 
      suffix = "st"; 
      break; 
     case 2: 
     case 22: 
      suffix = "nd"; 
      break; 
     case 3: 
     case 23: 
      suffix = "rd"; 
      break; 
     default: 
      suffix = "th"; 
      break; 
    } 

    return outputFormat == "d MMMM yyyy" ? string.Format("{0}{1} {2:MMMM} {3}", date.Day, suffix, date.Month, date.Year) : string.Format("{0}{1}", date.Day, suffix); 

} 

は、私はTEH OUTPUTFORMATはMMMMのYYYY DDとして指定されている場合、日付が出力2015年4月4日にしたいが、私はMMMMが返さ取得しています。私はhttp://www.csharp-examples.net/string-format-datetime/を読んでいると、それは誰もがイムが間違っているのかを見ることができます

String.Format("{0:M MM MMM MMMM}", dt); // "3 03 Mar March" month 

を使用するようにしてくださいと言いますか?

おかげ

enter image description here

+0

私がコンパイルしたコードに問題を持っていない、すべてのものをそれは離れて月の名前の代わりにMMMM出力 – Paul

答えて

1

あなたの問題は、文字列をフォーマットするとき、あなたが(日時)の代わりにdatedate.Month(int)を渡しているということです。

string.Format("{0}{1} {2:MMMM} {3}", date.Day, suffix, date.Month, date.Year) 

これは理にかなって:

date.ToString("MMMM"); 

これはしていません:

date.Month.ToString("MMMM"); 

あなたはちょうどあなたがあなたの問題を解決するには渡している引数のオフ.Monthをドロップすることができるはずです。

string.Format("{0}{1} {2:MMMM} {3}", date.Day, suffix, date, date.Year) 
+0

こんにちは、あなたは、コードの行は次のようにする必要がありますか? return outputFormat == "d MMMM yyyy"? string.Format( "{0} {1}"、string.Format( "{0} {1} {2} {3}"、date.Day、suffix、date.ToString( "MMMM")、 "、date.Day、suffix); – Paul

+0

それはまた動作するはずです。代わりに、あなたはできるはずです: 'return outputFormat ==" d MMMM yyyy "?接尾辞、日付、日付。年):string.Format( "{0} {1}"、date.Day( "{0} {1}"、 、接尾辞); '(正確に' .Month'プロパティなしであなたが持っていたもの) – itsme86

+0

パーフェクト!わかりました。私はこれを行ってみましょう。 – Paul