2013-07-09 100 views
15

我想實現this的反面,也就是說,我想將string格式爲hh:mm tt轉換爲TimeSpan零秒秒。上午/下午到TimeSpan

例如,09:45 pm轉換爲21:45:00

+1

'TimeSpan'沒有格式。 –

回答

48

最簡單的方法可能是使用DateTime.ParseExact將其解析爲DateTime,然後使用TimeOfDay來確定TimeSpan

DateTime dateTime = DateTime.ParseExact(text, 
            "hh:mm tt", CultureInfo.InvariantCulture); 
TimeSpan span = dateTime.TimeOfDay; 

很奇怪地看到領先0上幾個小時,當你指定AM/PM指示,但。您可能需要格式字符串中的「h」而不是「hh」,以允許「9:45 pm」而不是「09:45 pm」。我認爲這是奇怪的使用TimeSpan首先,但是在我看來,.NET日期/時間類型有些混亂。我推薦使用Noda Time,但我是偏見:)

0
TimeSpan tspan; 

tspan = DateTime.ParseExact("01:45 PM", "hh:mm tt", CultureInfo.InvariantCulture).TimeOfDay; 
+0

已經給出了確切的答案http://stackoverflow.com/a/17553758/3893182 – danopz

2

這項工作適合我。

TimeSpan ts= DateTime.Parse("8:00 PM").TimeOfDay; 
+0

它的工作很好,謝謝。 – amnippon