Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net DateTime的WebApi序列化-如何反序列化?_.net_Datetime - Fatal编程技术网

.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);