2011-01-08 99 views
2

我有用戶輸入的時間需要解析到DateTime或TimeSpan(日期不重要)。例如,需要能夠將「8:00」,「8:00」,「8:00 a」,「8:00 am」=>「08:00」解釋爲「012」解析用戶輸入時間字符串到DateTime/TimeSpan類(C#)

我已經嘗試過DateTime.ParseExact方法,但它依賴於小時和分鐘之間的冒號分隔符。因此在上面的前4個案例中失敗。 TimeSpan也依賴冒號。

我該如何去創建一個處理用戶輸入時間的多種方式的相對穩健的方式?一個想法是爲System.Globalization.DateTimeFormatInfo創建一個詳盡的格式化列表。但我不確定如何處理字符'a'或'am'等。

想法請。

回答

2

前四個病例是細:

  • 變種日期時間= DateTime.ParseExact( 「8A」 .Replace( 「一」, 「是」), 「HTT」, System.Globalization.CultureInfo .CurrentCulture);
  • var dateTime = DateTime.ParseExact(「0800」,「HHmm」, System.Globalization.CultureInfo.CurrentCulture);
  • var dateTime = DateTime.ParseExact(「8am」,「htt」, System.Globalization.CultureInfo.CurrentCulture);
  • 變種日期時間= DateTime.ParseExact( 「8 上午」, 「H TT」, System.Globalization.CultureInfo.CurrentCulture);

看一看this針對不同的toString匹配

+0

Thx,正是我所期待的。 – Mikos

1

爲什麼不只是改變一點點UI

1 - 有兩個組合框一個選擇時間1-12號

2-用於選擇AM/PM的第二個組合框,默認爲AM。

通過這種方式,您可以更好地控制時間格式,並且不需要根據tme格式編寫大量分支代碼。

+0

不幸的是不是一個選項。 – Mikos