C# 计时器选择器保存12小时至24小时格式

C# 计时器选择器保存12小时至24小时格式,c#,jquery,asp.net-mvc,asp.net-mvc-3,kendo-ui,C#,Jquery,Asp.net Mvc,Asp.net Mvc 3,Kendo Ui,我在将剑道时间选择器的值保存为24小时格式时遇到问题,时间选择器显示“HH:mm tt”格式,但我想将其转换为“HH:mm:ss”,我使用时间跨度作为我的drowdown列表 示例代码 String clientShiftId = formCollection["clientShiftId"]; String clientId = formCollection["clientId"]; String dateShift = formCollecti

我在将剑道时间选择器的值保存为24小时格式时遇到问题,时间选择器显示
“HH:mm tt”
格式,但我想将其转换为
“HH:mm:ss”
,我使用时间跨度作为我的drowdown列表

示例代码

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 
String clientShiftId=formCollection[“clientShiftId”];
字符串clientId=formCollection[“clientId”];
字符串dateShift=formCollection[“dllShiftDay”];
字符串startTime=formCollection[“txtStartTime”];
字符串endTime=formCollection[“txtEndTime”];
var stayHere=formCollection[“stayHere”];
客户\客户\职位\班次客户cusposshift=新客户\客户\职位\班次();
尝试
{
if(String.IsNullOrWhiteSpace(clientShiftId)| | clientShiftId==“0”)
{
client.client\u Customer\u PositionID=Convert.ToInt32(clientId);
clientCusPosShift.Day\u LookID=Convert.ToInt32(dateShift);
DateTime parsed=DateTime.ParseExact(endTime.Trim(),“hh:mm tt”,CultureInfo.InvariantCulture);

client.EndTime=parsed.ToString(“HH:mm:ss”,CultureInfo.InvariantCulture);如果它有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.TyPARSEActudie而不是<代码> PARSEACTION<代码>,以便更有效地检测无效输入。

顺便说一句,在解析时请注意“hh”而不是“hh”-您将收到11pm作为“11:00 pm”而不是“23:00 pm”。还要注意我如何使用局部变量作为中间值-我建议不要重复设置相同的属性(
client.EndTime
),这可能会在调试时导致混淆


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

谢谢您,先生,但是我在client.EndTime=parsed.ToString(“HH:mm:ss”,CultureInfo.InvariantCulture)中有错误;无法将源类型“string”转换为目标类型“System.TimeSpan”@Jon SkeetActual client.EndTime是此处的时间跨度sir@EnriqueGil:那么原始问题中的代码就没有意义了,因为您在第二行中为
client.EndTime
分配了一个字符串。您说过要将该值转换为
HH:mm:ss
-如果你只是想要一个
TimeSpan
,那同样没有意义。如果你真的只是想要一个
TimeSpan
,请使用我的第一行,然后使用
TimeOfDay
属性。就个人而言,我不喜欢在一天中的某个时间使用
TimeSpan
,但那是另一回事。我们几乎没有足够的上下文为了回答这个问题。我已经向您展示了如何获取24小时字符串格式,并解释了如何获取
TimeSpan
。如果您想要在设计层面上获得建议,我建议您提出一个更具上下文意义的新问题-使用注释线程来实现这一点是不合适的。@EnriqueGil:不,恐怕我现在没有时间聊天。我已经编辑了我的答案,以显示字符串格式或获取
TimeSpan
;其中包括“将输入数据转换为您想要的任何形式”问题-如果您有单独的问题,请将其作为单独的问题提问。