这段代码:
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 中删除了尾随零。但是当我试图解析这些字符串以取回我的 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:
格式异常
s 不包含与 format 中指定的模式相对应的日期和时间。
格式"o"
定义如下:
yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK
所以应该有明显的尾随零。
它是 WebApi 中的错误,还是我做错了什么?我应该如何将日期/时间字段传递给我的 .Net 客户端?
谢谢你。