【问题标题】:"Invalid Date" error on retrieving DateTime value from SQL Server Compact从 SQL Server Compact 检索 DateTime 值时出现“无效日期”错误
【发布时间】:2012-12-23 20:35:30
【问题描述】:

我在Breeze + Knockout + WebAPI + SQL Server Compact的简单项目中遇到了以下问题:

当我添加Breeze 实体(带有DateTime ko.observable)并执行Manager.SaveChanges() 时,该行已正确保存到SQL Server Compact 中,并且DateTime 列采用以下格式:23/12/2012 19.56.33 .

当我随后执行 Breeze 查询时,我得到了该行,但无法识别 DateTime 值:

无效日期

date 字段是 ko 可观察的,所以我无法调试值/格式,它是一种方法!

SaveChanges 之前的格式如下:Sun Dec 23 21:32:05 UTC+0100 2012

SaveChanges 之后,我在 SQL Server Compact 表中找到它,格式如下:23/12/2012 20.32.05

也许Breeze 也希望它是 UTC..?

非常感谢任何帮助!

谢谢

编辑:

这是从 WebApi BreezeController 返回的 json:

[
   {
      "$id":"1",
      "$type":"MvcTask.Models.Task, MvcTask",
      "id":110,
      "text":"aaa",
      "done":false,
      "created":"2012-12-23T19.56.33.950"
   }
]

【问题讨论】:

  • 你能发布你的页面从服务器接收到的 json 吗?如果您不使用 JSON.Net 作为序列化程序,则此 SO Question stackoverflow.com/questions/726334/… 可能涵盖了您的问题
  • 你好 photo_tom,我已经编辑了包含 json 的问题,感谢您的帮助!

标签: knockout.js sql-server-ce asp.net-web-api singlepage breeze


【解决方案1】:

早期版本的微风存在这个问题,但应该在以后的版本中修复。可以试试当前版本 v.80.1 吗?

【讨论】:

  • 已经更新到版本 80.1 但没有任何改变...同样的错误。
  • 另外时间不正确,少了1小时(我在utc + 1区)javascript输出正确,但是Breeze在Sql中保存错误
  • 还尝试使用 80.2“Todo”微风示例,尝试输出“CreatedAt”值给我同样的“无效日期”错误。等待修复:-) 谢谢。
  • 我无法使用最新版本的微风(v 0.82.1)确认此问题,使用 IE9、Firefox 和 Chrome。你用的是什么浏览器?
  • 经过进一步测试,问题出在“区域格式”(Windows 控制面板),而不是“显示语言”或“位置”。如果我将“区域格式”设置为“英语(美国)”,日期问题就会消失。
【解决方案2】:

您的问题与默认日期格式化程序有关,它没有提供您正在寻找的确切内容。看起来您正在接收 UTC 格式的数据,而您的代码并不期望这样。

看看ASP.NET Web API Date format in JSON does not serialise successfully

他们有类似的问题,但展示了如何自定义序列化程序。我过去做过这种技术,它解决了我的问题

【讨论】:

  • 您的控制器应使用 [Breeze] 属性,该属性包含专门为 BreezeJS 客户端使用而配置的 JSON 格式化程序。日期/时间格式是 ISO 8601 标准。我不认为这是 JSON 格式问题
猜你喜欢
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多