1

您好,我想将我的日期转换为以下格式 - 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 日,请帮帮我。谢谢你。

4

7 回答 7

1

未经测试,但它应该可以工作:

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";
        }
}
于 2012-08-09T14:06:08.013 回答
0

看来你不能,根据这个:http: //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

于 2012-08-09T14:00:27.127 回答
0

没有办法用格式字符串来做到这一点。您必须自己转换天数。这个答案中描述了一种方法。

于 2012-08-09T14:01:08.733 回答
0

如果您要使用“st”、“nd”、“rd”、“th”等。没有其他方法可以使用 swtich 运算符:

switch(yourdate.Day % 10)
  case(1): ...
  case(2): ...
于 2012-08-09T14:01:30.943 回答
0

你可以这样试试

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";
    }

希望这对你有帮助,谢谢。

于 2012-08-09T14:04:05.237 回答
0

由于序数非常特定于语言,因此不建议使用它们!但是,如果必须,编写一个 switch 语句来处理它应该非常简单。(如果它对你真的很重要)

然后你可以在空格处分割你的字符串,处理第一部分,然后再次合并字符串

于 2012-08-09T14:04:14.573 回答
0

拜托,谷歌一点......有发布的解决方案 http://blog.csharphelper.com/2010/07/15/find-the-ordinal-representation-of-an-integer-1st-2nd-3rd-in -c.aspx

于 2012-08-09T14:50:12.127 回答