首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将javascript变量“11:00 AM”转换为等效的c#,其中SQL为时间格式。

将javascript变量“11:00 AM”转换为等效的c#,其中SQL为时间格式。
EN

Stack Overflow用户
提问于 2015-09-22 07:53:57
回答 3查看 242关注 0票数 3

我有以下模型属性

代码语言:javascript
复制
public class CallLog
{
      public int CallLogID { get; set; }
      public TimeSpan endTime { get; set; }
      public TimeSpan startTime { get; set; }
}

我的api调用是"/api/CallLog/AddCallLog“。其中CallLog数据包含

代码语言:javascript
复制
startTime = "11:00 AM"
endTime = "11:30 AM"

我的api控制器是

代码语言:javascript
复制
[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输入的数据类型是“时间”。

EN

回答 3

Stack Overflow用户

发布于 2015-09-22 09:32:58

根据错误的意思,您可能必须提供从string类型"11:30 AM"TimeSpan类型的正确转换。您可以通过这样的参数将DateTime.ParseExact与转换模式一起使用:

代码语言:javascript
复制
string pattern = "HH:mm 'AM'";
TimeSpan yourTimeSpan = DateTime.ParseExact(
                                      "11:30 AM",
                                      pattern,
                                      CultureInfo.InvariantCulture
                                      ).TimeOfDay;

它会给你11点30分的时间

因此,您可以修改代码如下:

代码语言:javascript
复制
private string _endTime;
public TimeSpan endTime 
{
    get
    {
        return DateTime.ParseExact(
                                  _endTime,
                                  "HH:mm 'AM'",
                                  CultureInfo.InvariantCulture
                                  ).TimeOfDay;
    }            
}
票数 1
EN

Stack Overflow用户

发布于 2015-09-22 08:11:08

您可以使用DateTime并忽略date,并且只向用户显示时间,将其格式化为如下所示的用户:

代码语言:javascript
复制
DateTime.Now.ToString("t"); // 11:00 AM

所以你可以改变CallLog

代码语言:javascript
复制
public class CallLog
{
      public int CallLogID { get; set; }
      public DateTime endTime { get; set; }
      public DateTime startTime { get; set; }
}
票数 -1
EN

Stack Overflow用户

发布于 2015-09-22 08:14:12

代码语言:javascript
复制
DateTime.Parse("11:00 AM").TimeOfDay

它为您提供了值为TimeSpan11:00:00

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32711368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档