2013-08-23 128 views
1

我在將Kendo的時間選取器的值保存爲24小時制格式時出現問題,Timepicker顯示"HH:mm tt"格式,但我想將它轉換爲"HH:mm:ss",我使用時間範圍來放置我的drowdown名單Timepicker保存12小時至24小時格式

示例代碼

String clientShiftId = formCollection["clientShiftId"]; 
      String clientId = formCollection["clientId"]; 
      String dateShift = formCollection["dllShiftDay"]; 
      String startTime = formCollection["txtStartTime"]; 
      String endTime = formCollection["txtEndTime"]; 
      var stayHere = formCollection["stayHere"]; 

      Client_Customer_Position_Shift clientCusPosShift = new Client_Customer_Position_Shift(); 
      try 
      { 

       if (String.IsNullOrWhiteSpace(clientShiftId) || clientShiftId == "0") 
       { 
        client.Client_Customer_PositionID = Convert.ToInt32(clientId); 
        clientCusPosShift.Day_LookID = Convert.ToInt32(dateShift); 
        DateTime parsed = DateTime.ParseExact(endTime.Trim(), "hh:mm tt",CultureInfo.InvariantCulture); 
        client.EndTime = parsed.ToString("HH:mm:ss", CultureInfo.InvariantCulture); <------- Line of Error 
DateTime parse = DateTime.ParseExact(startTime.Trim(), "hh:mm tt",CultureInfo.InvariantCulture); 
        client.StartTime = parse.ToString("HH:mm:ss", CultureInfo.InvariantCulture); <------- Line of Error 

回答

3

不能分析它作爲一個TimeSpan它是否有一個AM/PM指示。你可以使用:

DateTime parsed = DateTime.ParseExact(endTime.Trim(), "hh:mm tt", 
             CultureInfo.InvariantCulture); 

// If you need a string 
client.EndTime = parsed.ToString("HH:mm:ss", CultureInfo.InvariantCulture); 

// If you just need a TimeSpan 
client.EndTime = parsed.TimeOfDay; 

我假設你得到的值將始終在固定區域性?您還應該考慮使用DateTime.TryParseExact而不是ParseExact,以便更乾淨地檢測無效輸入。

解析時請注意「hh」而不是「HH」,順便說一句 - 您將在晚上11點接收爲「晚上11點」而非「23:00」。另外請注意我是如何使用局部變量作爲中間值的 - 我建議不要反覆設置相同的屬性(client.EndTime),這會在調試時導致混淆。

(順便說一句,你還可以用我的Noda Time庫本,其中有一個單獨的LocalTime型,哪個更合適這裏你沒有一個日期。我不會建議它只是這種情況下,但如果你在應用程序中做其他日期/時間工作,你可能會發現它很有用。)

+0

謝謝先生,但我有錯誤在client.EndTime = parsed.ToString(「HH:mm:ss」 ,CultureInfo.InvariantCulture); 不能轉換源類型「字符串」爲目標類型「System.TimeSpan」 @喬恩飛碟雙向 –

+0

其實client.EndTime是這裏的時間跨度先生 –

+1

@EnriqueGil:然後在你原來的問題的代碼是沒有意義的,因爲你」在第二行重新分配一個字符串給'client.EndTime'。你說你想把值轉換爲'HH:mm:ss'的格式 - 如果你只是想要一個'TimeSpan',那再次沒有意義。如果你*真的*只想要一個'TimeSpan',請使用我的第一行,然後使用'TimeOfDay'屬性。就個人而言,我不喜歡在一天中的某個時間使用'TimeSpan',但這是另一回事。 –

相關問題