Timepicker节省12小时至24小时格式

时间:2013-08-23 06:12:47

标签: c# jquery asp.net-mvc asp.net-mvc-3 kendo-ui

我在将Kendo的时间选择器的值保存为24小时格式时出现问题,Timepicker显示"HH:mm tt"格式,但我想将其转换为"HH:mm:ss",我使用时间跨度为我的下拉列表

示例代码

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 

1 个答案:

答案 0 :(得分:3)

如果它有AM / PM指示符,则无法将其解析为TimeSpan。你可以使用:

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点”。还要注意我如何使用局部变量作为中间值 - 我建议不要重复设置相同的属性(client.EndTime),这可能会在调试时导致混淆。

(顺便说一下,你也可以使用我的Noda Time库,它有一个单独的LocalTime类型,这里更合适,因为你没有约会。我不会建议只是这种情况,但是如果你在应用程序中进行其他日期/时间工作,你会发现它很有用。)