Json.net的日期时间格式不正确



我开始使用Json.net解析带有日期值的Json字符串。约会时一切顺利。到目前为止,即使使用DateTime.Parse方法,我也无法将JValue转换为.NET DateTime,因为Json.NET似乎将日期解析为一种不寻常的格式,看起来像这个

"Wed Jul 20 16:00:00 CEST 2016"

我设法使用正则表达式重新格式化和解析了日期,但为了将来使用,我想学会正确使用Json.net,而不是重新发明轮子。

JSON字符串如下

{
"totalCount": 5,
"avis": [{
    "idDossier": 422271,
    "typeDocDCE": 1,
    "dcevisible": 0,
    "organisme": "OPAC du Rhône",
    "idOrganisme": 5687,
    "reference": "16S0012",
    "idTypeProcedure": 68,
    "typeProcedure": "Procédure adaptée",
    "idTypeMarche": 1,
    "typeMarche": "Travaux",
    "libelle": "CHAMBOST ALLIERES - Les Cités - Construction de 16 logements individuels et intermédiaires",
    "dateRemiseOffre": "20/07/2016 00:00",
    "dateRemiseCandidature": "",
    "datePublication": "23/06/2016 17:48",
    "dateLimite": "20/07/2016 16:00",
    "idFichierRC": 0,
    "rectificatifs": true,
    "questions": true,
    "mps": false
}, {
    "idDossier": 422402,
    "typeDocDCE": 6,
    "dcevisible": 0,
    "organisme": "OPAC du Rhône",
    "idOrganisme": 5687,
    "reference": "16S0010",
    "idTypeProcedure": 2,
    "typeProcedure": "Appel d'offres restreint",
    "idTypeMarche": 2,
    "typeMarche": "Services",
    "libelle": "Maintenance des installations de chauffage et ECS avec intéressement et prestations de réparation sur le patrimoine de l’Opac du Rhône - Lot n°3 : chaufferies et installations de chauffage collectif et électriques des agences de Thizy et L’Arbresle",
    "dateRemiseOffre": "",
    "dateRemiseCandidature": "25/07/2016 00:00",
    "datePublication": "27/06/2016 11:43",
    "dateLimite": "25/07/2016 16:00",
    "idFichierRC": 0,
    "rectificatifs": false,
    "questions": false,
    "mps": false
}]

}

这是我的C#代码

            string JsonString = new WebClient().DownloadString(URL);
        JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
        {
            DateFormatHandling = DateFormatHandling.MicrosoftDateFormat,
            DateTimeZoneHandling = DateTimeZoneHandling.Local
        };
        dynamic elements = JsonConvert.DeserializeObject(JsonString, microsoftDateFormatSettings);
        for (int i = 0; i < int.Parse(elements.totalCount.ToString()) ; i++)
        {
            idDossier = elements.avis[i].idDossier;
            refs = elements.avis[i].
            PublicationDate = elements.avis[i].datePublication;
            Deadline = elements.avis[i].dateLimite;

我做错了什么?

提前感谢

您可以在JsonSerializerSettings 中指定DateFormatString

var json = @"{""dateRemiseCandidature"": ""25/07/2016 00:00""}";
var settings = new JsonSerializerSettings
{
    DateFormatString = "dd/MM/yyyy hh:mm"
};
var result = JsonConvert.DeserializeObject<SomeClass>(json, settings);
//////
class SomeClass
{
    public DateTime dateRemiseCandidature { get; set; }
}

相关内容

  • 没有找到相关文章

最新更新