我有以下模型属性
public class CallLog
{
public int CallLogID { get; set; }
public TimeSpan endTime { get; set; }
public TimeSpan startTime { get; set; }
}
我的 api 调用是“/api/CallLog/AddCallLog”。其中 CallLog 数据包含
startTime = "11:00 AM"
endTime = "11:30 AM"
我的 api Controller 是
[HttpPost]
public IHttpActionResult AddCallLog(CallLog callLog)
{
if (!ModelState.IsValid)
{
return Json(new
{
success = false,
errors = ModelState.Keys.SelectMany(k => ModelState[k].Errors)
.Select(m => m.ErrorMessage).ToArray()
});
}
CallLog.InsertCallLog(callLog);
return CreatedAtRoute("DefaultApi", new { id = callLog.CallLogID }, callLog);
}
它给了我以下错误
{"Error converting value \"11:00 AM\" to type 'System.TimeSpan'. Path 'startTime'....}
{"Error converting value \"11:30 AM\" to type 'System.TimeSpan'. Path 'endTime'....}
我的问题是像“11:00 AM”这样的时间我需要什么数据类型。请记住我在数据库中的 startTime 和 endTime 数据类型是“时间”。
最佳答案
根据错误的说法,您可能必须提供从 string
类型 "11:30 AM"
到 TimeSpan
的正确转换类型。您可以通过参数将 DateTime.ParseExact
与转换模式一起使用,如下所示:
string pattern = "HH:mm 'AM'";
TimeSpan yourTimeSpan = DateTime.ParseExact(
"11:30 AM",
pattern,
CultureInfo.InvariantCulture
).TimeOfDay;
它将为您提供值为 11:30:00 的时间跨度
因此,您可以将代码修改为如下内容:
private string _endTime;
public TimeSpan endTime
{
get
{
return DateTime.ParseExact(
_endTime,
"HH:mm 'AM'",
CultureInfo.InvariantCulture
).TimeOfDay;
}
}
关于javascript - 将 javascript 变量 “11:00 AM” 转换为 c# 等效项,其中 SQL 为时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32711368/