こんにちは、次の形式のように日付を変換したい-- 2012 年 6 月 1 日、2012 年 3 月 3 日、2012 年 6 月 11 日
Convert.ToDateTime(ds.Tables[0].Rows[0]["Date"]).ToString("d MMM yyyy")
しかし、上記のコードで私はこのようになっています
2012 年 6 月 1 日、2012 年 3 月 3 日、助けてください。ありがとうございました。
テストされていませんが、動作するはずです:
DateTime dateTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["Date"]);
string date = string.Format("{0}{1} {2} {3}", dateTime.Day, GetOrdinal(dateTime.Day), dateTime.ToString("MMM"), datetTime.Year);
public string GetOrdinal(int number)
{
switch(number % 100)
{
case 11:
case 12:
case 13:
return "th";
}
switch(number % 10)
{
case 1:
return "st";
case 2:
return "nd";
case 3:
return "rd";
default:
return "th";
}
}
これによると、できないようです: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
フォーマット文字列でこれを行う方法はありません。自分で日数を変換する必要があります。この回答で説明されているアプローチがあります。
「st」、「nd」、「rd」、「th」などを使用する場合は、swtich 演算子を使用する以外に方法はありません。
switch(yourdate.Day % 10)
case(1): ...
case(2): ...
あなたはこのように試すことができます、
string strPostfix = string.Empty;
if (DateTime.Now.Day == 1 || DateTime.Now.Day == 21 || DateTime.Now.Day == 31)
{
strPostfix = "st";
}
else if (DateTime.Now.Day == 2 || DateTime.Now.Day == 22)
{
strPostfix = "nd";
}
else if (DateTime.Now.Day == 3 || DateTime.Now.Day == 23)
{
strPostfix = "rd";
}
else
{
strPostfix = "th";
}
これが役に立てば幸いです、ありがとう。
序数は言語固有であるため、使用はお勧めしません。ただし、必要に応じて、switch ステートメントを記述して処理するのは非常に簡単です。(それがあなたにとって本当に重要な場合)
次に、文字列をスペースで分割し、最初の部分を処理して、文字列を再度マージできます
少しグーグルしてください...公開されたソリューションがあります http://blog.csharphelper.com/2010/07/15/find-the-ordinal-representation-of-an-integer-1st-2nd-3rd-in -c.aspx