2013-04-30 41 views
0

我有文本框,接受時間格式這樣12:40 PM,但想將它轉換成像這樣的時間格式12:40:00基本上沒有PM或上午。以下是我迄今爲止:如何將字符串格式的時間轉換爲日期時間格式使用C#

string StartTime = ((TextBox)TestDV.FindControl("txtBST")).Text.ToString(); 

感謝

+0

在.net中嘗試谷歌日期時間格式 – 2013-04-30 18:07:24

+0

DateTime.Parse或DateTime.TryParse方法。看看他們。 – 2013-04-30 18:08:12

+0

http://msdn.microsoft.com/en-us/library/se73z7b9.aspx TimeSpan.Parse應該訣竅 – 2013-04-30 18:08:30

回答

3

既然你把它作爲一個字符串,這實際上很容易。

string StartTime = ((TextBox)TestDV.FindControl("txtBST")).Text.ToString(); 
DateTime dt = new DateTime(); 
try { dt = Convert.ToDateTime(StartTime); } 
catch(FormatException) { dt = Convert.ToDateTime("12:00 AM"); } 
StartTime = dt.ToString("HH:mm"); 

所以你把你的字符串,並將其轉換爲日期。如果輸入不是有效日期,則默認爲00:00。無論哪種方式,它都會給你一個字符串和一個DateTime對象來處理,這取決於你需要做什麼。兩者都代表相同的值,但字符串將採用24小時格式。

乾杯!

8

一種選擇將是解析爲DateTime,然後返回一個字符串:

string s = "12:40 PM"; 

DateTime dt = DateTime.Parse(s); 

string s2 = dt.ToString("HH:mm:ss"); // 12:40:00 

注意,但是,大多數與DateTime的字符串表示相比,DateTime的運行效果更好。

+1

我個人會避開通用的'DateTime.Parse' - 如果格式已知,請指定它! – 2013-04-30 18:12:30

+0

另外,你的意思是'ss',而不是'mm' – 2013-04-30 18:14:42

+0

@JonSkeet我同意 - 只是想到了一般想法。 – 2013-04-30 18:16:33

5

首先,您應該將其解析爲DateTime,然後對其進行格式化。這聽起來像你的輸入格式是hh:mm tt和你的輸出格式是HH:mm:ss。所以,你必須:

string input = "12:40 PM" 
DateTime dateTime = DateTime.ParseExact(input, "hh:mm tt", 
             CultureInfo.InvariantCulture); 
string output = dateTime.ToString("HH:mm:ss", CultureInfo.InvariantCulture); 

需要注意的是:

  • 我用DateTime.ParseExact如果解析失敗,將拋出一個異常;你可能想使用DateTime.TryParseExact(這取決於你的情況)
  • 我已經在這裏使用不變文化的兩個操作。我不知道你的情況是否正確。
  • 我用hh:mm,但你可能想要h:mm ...你會期望「下午1點」或「01點」?
  • 你不解析秒,所以這部分將永遠是0 ...是好嗎?
相關問題