如何将字符串转换为指定的日期格式

时间:2012-08-09 13:49:21

标签: c# date

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

7 个答案:

答案 0 :(得分: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";
        }
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用格式字符串无法做到这一点。您必须自己转换日期编号。有一种方法描述in this answer

答案 3 :(得分:0)

如果您打算使用“st”,“nd”,“rd”,“th”等,除了使用开关操作符之外别无他法:

switch(yourdate.Day % 10)
  case(1): ...
  case(2): ...

答案 4 :(得分: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";
    }

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)