我有以下模型属性
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控制器是
[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);
}它给出了以下错误
{“错误转换值\"11:00 AM\”键入'System.TimeSpan'.路径‘startTime’.} {“错误转换值\"11:30 AM\”键入'System.TimeSpan'.路径‘结束时间’.}
我的问题是,我需要什么数据类型的时间,如“上午11:00”。记住,我在数据库中为startTime和endTime输入的数据类型是“时间”。
发布于 2015-09-22 09:32:58
根据错误的意思,您可能必须提供从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分的时间
因此,您可以修改代码如下:
private string _endTime;
public TimeSpan endTime
{
get
{
return DateTime.ParseExact(
_endTime,
"HH:mm 'AM'",
CultureInfo.InvariantCulture
).TimeOfDay;
}
}发布于 2015-09-22 08:11:08
您可以使用DateTime并忽略date,并且只向用户显示时间,将其格式化为如下所示的用户:
DateTime.Now.ToString("t"); // 11:00 AM所以你可以改变CallLog
public class CallLog
{
public int CallLogID { get; set; }
public DateTime endTime { get; set; }
public DateTime startTime { get; set; }
}发布于 2015-09-22 08:14:12
DateTime.Parse("11:00 AM").TimeOfDay它为您提供了值为TimeSpan的11:00:00。
https://stackoverflow.com/questions/32711368
复制相似问题