2012-08-24 206 views
3

可能重複:
How to convert DateTime object to dd/mm/yyyy in C#?轉換日期時間

我是新來的C#和希望有人可以幫我清理一些代碼。

我有以下方法將日期時間轉換爲自定義事件字符串,例如30th of Jan 2012轉化爲201201(忽略日)

public ConvertToEventDate(DateTime date) 
{ 
    var year = date.Year.ToString(); 
    var month = date.Month.ToString(); 
    month = month.Length == 2 ? month : "0" + month; 
    return year + month; 
} 

我在想,如果有這樣的轉換更好的方法。

+0

以上不會編譯 - 函數簽名中沒有定義返回類型。 – Oded

回答

2

我會做到這一點;

public string ConvertToEventDate(DateTime date) 
{ 
    return date.ToString("yyyyMM"); 
} 

你也可以把它放到這樣的擴展方法中;

public static class ExtenstionMethods 
{ 
    public static string ToEventDate(this DateTime date) 
    { 
     return date.ToString("yyyyMM"); 
    } 
} 

然後稱它爲ike這個;

DateTime date = new DateTime(2012, 30, 1); 

    date.ToEventDate(); 

與此相對;

ConvertToEventDate(date); 
+0

我喜歡擴展方法的想法,因爲它被從全部代碼中調用,所以寧願保持它的集中式 – user1622452

2
public string ConvertToEventDate(DateTime date) 
{ 
    return date.ToString("yyyyMM", CultureInfo.InvariantCulture); 
} 

看一看在custom formatting strings docs

+0

我不喜歡上面的編輯,我沒有看到把它放在一個函數中。只需MyDateTimeObject.ToString(「yyyyMM」)更容易閱讀,將其封裝在一個新函數中不會添加任何imo。 – Dan

+0

因爲OP把它放在一個函數中,所以它在函數中。 – Oded

+0

OP要求更乾淨的代碼。我認爲調用date.ToString(「yyyyMM」)比調用ConvertToEventDate(date)更清晰明瞭。 – Dan

0

嘗試

return date.ToString("yyyyMM"); 
+1

'Format'?你的意思是'ToString'? – Oded

+0

是的,謝謝。 – tomsv

2

也有人建議ToString("yyyyMM")這是基本上有 - 但我會建議你可能要指定固定區域性。否則,如果該線程的當前文化使用非格里曆日曆,那麼最終可能會有一個月/一年沒有預料到。所以,我會用:

string text = date.ToString("yyyyMM", CultureInfo.InvariantCulture); 

詳細信息,如果您想以後更改的確切格式見custom date and time format strings的文檔。