转换javascript变量“;上午11:00”;到c#等价物,其中SQL为时间格式
我有以下模型属性转换javascript变量“;上午11:00”;到c#等价物,其中SQL为时间格式,javascript,c#,asp.net,asp.net-mvc,asp.net-web-api,Javascript,C#,Asp.net,Asp.net Mvc,Asp.net Web Api,我有以下模型属性 public class CallLog { public int CallLogID { get; set; } public TimeSpan endTime { get; set; } public TimeSpan startTime { get; set; } } 我的api调用是“/api/CallLog/AddCallLog”。调用日志数据包含在哪里 startTime = "11:00 AM" endTime = "11:3
public class CallLog
{
public int CallLogID { get; set; }
public TimeSpan endTime { get; set; }
public TimeSpan startTime { get; set; }
}
我的api调用是“/api/CallLog/AddCallLog”。调用日志数据包含在哪里
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”类型时出错。路径为“endTime”…}
我的问题是像“上午11:00”这样的时间需要什么数据类型。记住我在数据库中的startTime和endTime的数据类型是“time”。您可以使用
DateTime
忽略日期,只向用户显示时间,将其格式化后输出给用户,如下所示:
DateTime.Now.ToString("t"); // 11:00 AM
string pattern = "HH:mm 'AM'";
TimeSpan yourTimeSpan = DateTime.ParseExact(
"11:30 AM",
pattern,
CultureInfo.InvariantCulture
).TimeOfDay;
private string _endTime;
public TimeSpan endTime
{
get
{
return DateTime.ParseExact(
_endTime,
"HH:mm 'AM'",
CultureInfo.InvariantCulture
).TimeOfDay;
}
}
所以你可以改变呼叫记录
public class CallLog
{
public int CallLogID { get; set; }
public DateTime endTime { get; set; }
public DateTime startTime { get; set; }
}
它为您提供
TimeSpan
值11:00:00
根据错误说明,您可能必须提供从字符串
类型“11:30 AM”
到TimeSpan
类型的正确转换。您可以通过如下参数将DateTime.ParseExact
与转换模式一起使用:
DateTime.Now.ToString("t"); // 11:00 AM
string pattern = "HH:mm 'AM'";
TimeSpan yourTimeSpan = DateTime.ParseExact(
"11:30 AM",
pattern,
CultureInfo.InvariantCulture
).TimeOfDay;
private string _endTime;
public TimeSpan endTime
{
get
{
return DateTime.ParseExact(
_endTime,
"HH:mm 'AM'",
CultureInfo.InvariantCulture
).TimeOfDay;
}
}
它将为您提供时间跨度,值为11:30:00
因此,您可以将代码修改为以下内容:
DateTime.Now.ToString("t"); // 11:00 AM
string pattern = "HH:mm 'AM'";
TimeSpan yourTimeSpan = DateTime.ParseExact(
"11:30 AM",
pattern,
CultureInfo.InvariantCulture
).TimeOfDay;
private string _endTime;
public TimeSpan endTime
{
get
{
return DateTime.ParseExact(
_endTime,
"HH:mm 'AM'",
CultureInfo.InvariantCulture
).TimeOfDay;
}
}
您可以使用timespan
timespan timespan=new timespan(11,00,00)代码>将显示上午11:00