2015-08-13 18 views
5

Ho un'API WebApi2 ASP.NET che restituisce alcuni timestamp in formato JSON. I timestamp hanno una risoluzione di millisecondi.Come forzare il formato ISO "YYYY-MM-DDThh: mm: ss.sss" sull'uscita JSON?

Di solito ho avuto timestamp di questo formato che va bene "YYYY-MM-DDThh:mm:ss.sss"

Purtroppo, se un timestamp accade per codificare un appuntamento con tutta la seconda il formato di output è "YYYY-MM-DDThh:mm:ss" (notare il mancante .sss ")

Come formato ISO forza "YYYY-MM-DDThh:mm:ss.sss" sull'uscita JSON per tutto il tempo?

+0

Hai già ignorato qualsiasi comportamento di serializzazione predefinito, perché ho letto che sarebbe terminato in una "Z" o in un fuso orario: http://www.asp.net/web-api/overview/formats-and-model -binding/json-and-xml-serialization # json_dates – weston

+0

non ancora ... Sto usando il vanilla jsonizer che viene fornito con il framework –

+0

In realtà stai usando esplicitamente qualcosa o semplicemente lasciando che il framework web api esegua la serializzazione? – weston

risposta

3

aggiungere questa linea al WebApiConfig.Register

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // existing stuff 

     config.Formatters 
      .JsonFormatter 
      .SerializerSettings 
      .DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK"; 
    } 
} 

Il formato predefinito è "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK" che offre fino a 6 dp. Ho indovinato in minuscolo f e sembra funzionare.

Nota il K è fuso orario (o Z per UTC) mostra anche vuoto per tipi di date sconosciute, motivo per cui non è presente nulla.

+1

hai reso il mio giorno fratello, grazie –

+0

@GianlucaGhettini ho cambiato da "yyyy" - "MM" - "dd'T'HH": "mm": "ss.FFFFFFFK" a "yyyy" - "MM" - " dd'T'HH ':' mm ':' ss.FFFFFFFZ "e problema del browser per la conversione di datetime in data/ora locale risolta. Grazie. –

+0

@BimalDas perché lo stai rivolgendo a Gianluca, ho scritto la risposta! hehe – weston