.net DateTime的WebApi序列化-如何反序列化?
此代码:.net DateTime的WebApi序列化-如何反序列化?,.net,datetime,.net,Datetime,此代码: public class PhotoDescriptor { public DateTime DateCreatedUtc { get; set; } } public class PhotosController : ApiController { // GET api/photos public IEnumerable<PhotoDescriptor> GetListOfPhotos() { return new Pho
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(),
},
};
}
请注意,尾随的零已从日期时间中删除。但是,当我试图解析这些字符串以获取我的DateTime时,我得到了FormatException-字符串未被识别为有效的DateTime
:
var date = DateTime.ParseExact("2012-07-24T00:28:41.873877Z", "o", CultureInfo.InvariantCulture, DateTimeStyles.None);
根据MSDN,这是正确的:
格式异常
s不包含对应于的日期和时间
格式中指定的模式
和“o”
格式如下:
yyyy'-'MM'-'dd'T'HH':'MM':'ss'。'FFFFFFF K
所以很明显尾随的零应该在那里
这是WebApi中的错误,还是我做错了什么?我应该如何将日期/时间字段传递给我的.Net客户端
谢谢。是的,您正确地解析了硬编码的值-但是您的代码没有显示如何用JSON写出它们。您的“应该”声明仅与您正在解析的格式有关,当然,它不会在
DateTime
本身中传播
如果您想自己解析这些值(我不得不问为什么没有为您解析…),您可以使用F
而不是F
:
DateTime value = DateTime.ParseExact(text,
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'FFFFFFFK",
CultureInfo.InvariantCulture);
我并不是说它不是WebApi中的一个bug-但我从你的帖子中没有看到任何迹象表明它是WebApi中的bug。。。并举出“仅限于第二个”的例子,表明这是故意的
DateTime value = DateTime.ParseExact(text,
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'FFFFFFFK",
CultureInfo.InvariantCulture);