- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这段代码:
public class PhotoDescriptor
{
public DateTime DateCreatedUtc { get; set; }
}
public class PhotosController : ApiController
{
// GET api/photos
public IEnumerable<PhotoDescriptor> GetListOfPhotos()
{
return new PhotoDescriptor[]
{
new PhotoDescriptor
{
DateCreatedUtc = DateTime.ParseExact(
"2012-07-24T00:28:41.8738770Z",
"o",
CultureInfo.InvariantCulture,
DateTimeStyles.None).ToUniversalTime(),
},
new PhotoDescriptor
{
DateCreatedUtc = DateTime.ParseExact(
"2012-07-24T00:28:41.0000000Z",
"o",
CultureInfo.InvariantCulture,
DateTimeStyles.None).ToUniversalTime(),
},
};
}
返回以下 JSON:
[{"DateCreatedUtc":"2012-07-24T00:28:41.873877Z"},
{"DateCreatedUtc":"2012-07-24T00:28:41Z"}]
请注意,尾随零已从日期时间中删除。但是当我试图解析这些字符串以取回我的 DateTime 时,我得到了 FormatException - String was not recognized as a valid DateTime
:
var date = DateTime.ParseExact("2012-07-24T00:28:41.873877Z", "o", CultureInfo.InvariantCulture, DateTimeStyles.None);
这是正确的,根据 MSDN DateTime.ParseExact Method :
FormatException
s does not contain a date and time that corresponds to the pattern specified in format.
和“o”
格式is defined如下:
yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK
如此明显的尾随零应该在那里。
这是 WebApi 中的错误,还是我做错了什么?我应该如何将日期/时间字段传递给我的 .Net 客户端?
谢谢。
最佳答案
是的,您正在适本地解析硬编码值 - 但您的代码没有说明应如何将它们写成 JSON。您的“应该”声明仅针对您正在解析 的格式,当然不会在 DateTime
本身内传播。
如果您想自己解析这些值(我不得不问为什么没有为您完成...)您可以使用 F
而不是 f
:
DateTime value = DateTime.ParseExact(text,
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'FFFFFFFK",
CultureInfo.InvariantCulture);
我并不是说它不是 WebApi 中的错误 - 但我没有从您的帖子中看到任何迹象表明它是 WebApi 中的错误。 ..和Scott Hanselman's post on dates in WebApi给出“精确到秒”的例子,表明这是故意的。
关于.net - DateTime 的 WebApi 序列化 - 如何反序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640875/
我是一名优秀的程序员,十分优秀!