C# 需要创建datetime的字符串表示形式

C# 需要创建datetime的字符串表示形式,c#,C#,我需要将datetime解析为以下字符串: Nov 30 2012 Dec 1 2012 请注意日期格式。对于第二个例子,只有一个字符在那里,并且它的开头用空格填充 现在,我正在这样做: string month = DateTime.Now.ToString("MMM"); string day = DateTime.Now.Day.ToString().PadLeft(2, ' '); string year = DateTime.Now.Year.ToStrin

我需要将datetime解析为以下字符串:

Nov 30 2012
Dec  1 2012
请注意日期格式。对于第二个例子,只有一个字符在那里,并且它的开头用空格填充

现在,我正在这样做:

    string month = DateTime.Now.ToString("MMM");
    string day = DateTime.Now.Day.ToString().PadLeft(2, ' ');
    string year = DateTime.Now.Year.ToString();

    string myFormat = month + " " + day + " " + year;

需要更优雅的解决方案。

解析的问题是字符串中的空格数可变。您可以使用
RemoveEmptyEntries
(空格)上拆分字符串,然后使用
字符串。Join
使用单个空格创建新字符串。稍后,您可以将格式“MMM d yyyy”与日期时间一起使用

string str = "Dec  1 2012";
string newStr = string.Join(" ", str.Split(" ".ToCharArray(),StringSplitOptions.RemoveEmptyEntries));
DateTime dt = DateTime.ParseExact(newStr, "MMM d yyyy", CultureInfo.InvariantCulture);
编辑:

因为问题现在已被编辑,并且需要日期的字符串格式。以下内容可用于格式化

string formattedDate = dt.Day < 10 ? dt.ToString("MMM  d yyyy"): //multiple spaces
                                     dt.ToString("MMM d yyyy"); //single space
string formattedDate=dt.Day<10?dt.ToString(“MMM d yyy”)://多个空格
dt.ToString(“MMM d yyyy”)//单一空间

给你。我相信这是关于生成输出,而不是阅读输出

 DateTime dt = new DateTime(2013, 1, 1);
 Console.WriteLine(string.Format("{0:MMM} {0,2:%d} {0:yyyy}", dt));

如果需要从DateTime获取字符串(如示例中所示),则可以使用简单的:

if (DateTime.Now.Day > 9)
    myFormat = DateTime.Now.ToString("MMM dd YYYY");
else
    myFormat = DateTime.Now.ToString("MMM  d YYYY");
使用String.Format

DateTime dt = new DateTime(2012, 12, 1);
MessageBox.Show(String.Format("{0:MMM d yyyy}", dt));
编辑:示例

如果你想让数字对齐,那么

//call
MessageBox.Show(GetNewDateString(new DateTime(2012, 11, 30)) + "\n" + GetNewDateString(new DateTime(2012, 12, 1)));

public String GetNewDateString(DateTime dt)
{
   return dt.Day > 9 ? String.Format("{0:MMM d yyyy}", dt) : String.Format("{0:MMM   d yyyy}", dt);
}

你试过什么吗?我已经编辑过了,以显示我现在正在做什么。不要急于投票否决。您想从字符串中解析日期还是将日期时间显示为字符串?看到其他答案,我有点困惑标题很混乱,问题是如何实际格式化
DateTime
,与
Parse
无关。这不起作用-如果需要,它不会增加额外的空间。。。在%d@JleruOHeP谢谢你催我:)