2012-12-26 64 views
-2

的字符串表示我需要一個日期時間解析到以下字符串:需要創建日期時間

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; 

需要更好的解決方案。

+0

你嘗試過什麼嗎? – ryadavilli

+0

[你有什麼試過](http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – Azodious

+2

我已編輯過,以顯示我現在正在做的事情。不要急於投票。 –

回答

2

你在這裏。我相信它是關於產生輸出而不是讀取它。

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

不會工作,因爲它會在MMM和dd之間添加2個空格 – JleruOHeP

+0

@JleruOHeP你是對的。將工作更新 – ryadavilli

+1

這不會工作 - 它不會增加額外的空間,如果需要的話......並且%d後有額外的逗號 – JleruOHeP

2

解析的問題是字符串中可變數量的空格。您可以將" "(空格)上的字符串與RemoveEmptyEntries分開,然後使用string.Join創建一個具有單個空格的新字符串。稍後,可以使用格式​​3210與DateTime.ParseExact

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 
3

如果您需要從日期時間(如你的例子)得到的字符串,那麼你可以使用簡單:

if (DateTime.Now.Day > 9) 
    myFormat = DateTime.Now.ToString("MMM dd YYYY"); 
else 
    myFormat = DateTime.Now.ToString("MMM d YYYY"); 
1

使用的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); 
} 
相關問題