2014-10-01 213 views
1

將字符串日期格式化爲特定格式的最佳方法是什麼?格式化日期到特定格式

例如,如果輸入是30/09/2014,它將被格式化爲2014-09-30或前者的任何其他類似的日期格式?

+0

在DateTime對象上執行.ToString()並指定您喜歡的格式:http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx。然而,如果你已經在查看字符串日期,那麼你應該將它轉換爲日期時間對象,然後根據自己的喜好獲取字符串格式 – 2014-10-01 12:51:12

+4

迄今爲止您所嘗試的內容並不十分清楚,或者您是否正在尋找解析以及格式化建議。使用自定義格式字符串調用'DateTime.ToString'可能想要在這裏... – 2014-10-01 12:51:15

回答

8

首先,DateTime不具有任何隱式格式。絃樂有。

聽起來像你只是需要解析你的字符串,並用DateTime.ToString()方法來格式化它;

string s = "30/09/2014"; 
DateTime dt; 
if(DateTime.TryParseExact(s, "dd/MM/yyyy", CultureInfo.InvariantCulture, 
          DateTimeStyles.None, out dt)) 
{ 
    dt.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture).Dump(); 
    // Result will be 2014-09-30 
} 

由於我創建LINQPad這個例子中,.Dump()只是一個擴展方法。

當您解析一個字符串作爲日期分隔符時,請注意/"/" custom format specifier具有的特殊含義取代我與指定文化日期分隔符的當前文化。也就是說,您的CurrentCulture或指定文化的DateSeparator property不是/,如果您的字符串和格式是相同的格式,則您的解析操作將失敗甚至

這就是爲什麼我在我的例子中使用了InvariantCulture,因爲它有/作爲DateSeparator

+0

我假設你使用linqpad?也許刪除'.Dump()' – 2014-10-01 12:58:55

+0

@DavidPilkington是的,我在我的回答中提到了它。只是示例下的第一行。 – 2014-10-01 13:02:08