2013-04-05 160 views
0

給定兩個字符串解析C#字符串HH:MM:SS

string date = "02Mar13"; 
string duration = "03.20min"; 

如何解析他們DateTime,並顯示在下面的格式

string date = "02 March 2013"; 
string duration = "00:03:20"; 

我在列表中去here但沒有人符合我的要求。

+0

您可以使用[DateTime.ParseExact(http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx)。在MSDN和StackOverflow上應該有很多例子。 – Default 2013-04-05 09:13:01

回答

5

您需要使用解析這些,並使用一個,以及輸出:

DateTime dt = DateTime.ParseExact(date + duration, 
            "ddMMMyymm.ss'min'", 
            CultureInfo.InvariantCulture); 

string newDate = dt.ToString("dd MMMM yyyy"); 
string newDuration = dt.ToString("HH:mm:ss"); 

注意事項:我使用'min'表示字符串中的min文字 - 這是自定義格式字符串的一部分,使內字符串文字。

4
string date = "02Mar13"; 
string duration = "03.20min"; 
DateTime newDate = DateTime.ParseExact(date + duration, "ddMMMyymm.ss\\min", null); 

date = newDate.ToString("dd MMMM yyyy"); 
duration = newDate.ToString("hh:mm:ss"); 
+1

'03.20'是分鐘。秒,而不是小時。分鐘,如所需的輸出所示。 – Oded 2013-04-05 09:18:47

+2

+1對'\\ min',證明你在SO – Habib 2013-04-05 09:32:31

+0

上學到的東西是什麼\'min'做的是什麼? – Default 2013-04-05 10:18:39

1

DateTime的解析是使用DateTime.ParseExact非常簡單:

DateTime.ParseExact(date, "ddMMMyy", null).ToString("dd MMMM yyyy"); // "02 March 2013" 

至於第二部分,如果它是一個持續時間語義,那麼它是更合適的是使用TimeSpan.ParseExact(儘管它需要一些擺弄格式字符串):

TimeSpan.ParseExact(duration, "mm\\.ss'min'", null).ToString("hh\\:mm\\:ss"); // "00:03:20" 
1

怎麼能生產出dateResult

 string date = "02Mar13"; 
     string duration = "03.20min"; 
     var mat=Regex.Match(duration, "(.+?)min"); 
     var dateResult = DateTime.ParseExact(date + mat.Groups[1].Value.Replace(".",":"), "ddMMMyyHH:mm", Thread.CurrentThread.CurrentCulture); 
+0

正則表達式在這裏矯枉過正。絕對不是必需的,當自定義格式字符串可以直接處理文字。 – Oded 2013-04-05 09:52:37

+0

是啊!你更好。我不知道'表達'的用法,非常好。謝謝。 +1 – 2013-04-05 10:51:18