2016-12-19 2 views
0

Ich habe einen großen JSON, der Datumswerte in einer Zeichenfolge enthält. Ich Umwandlung meine JSON in CSV-Code unten verwenden:Warum wird das Datumsformat beim Konvertieren von JSON in CSV in C# automatisch geändert?

StringWriter csvString = new StringWriter(); 
using (var csv = new CsvWriter(csvString)) 
{ 
    csv.Configuration.SkipEmptyRecords = true; 
    csv.Configuration.WillThrowOnMissingField = false; 
    csv.Configuration.Delimiter = delimiter; 

    using (var dt = jsonStringToTable(jsonContent)) 
    { 
     foreach (DataColumn column in dt.Columns) 
     { 
      csv.WriteField(column.ColumnName); 
     } 
     csv.NextRecord(); 

     foreach (DataRow row in dt.Rows) 
     { 
      for (var i = 0; i < dt.Columns.Count; i++) 
      { 
       csv.WriteField(row[i]); 
      } 
      csv.NextRecord(); 
     } 
    } 

JSON-Wert:

[{ 
    "Amount": "35.80", 
    "Parentid": "abcd", 
    "code": "CGL", 
    "Effective_Date": "2016-04-25T18:30:00" 
}] 

Sobald diese JSON konvertiert wird, über das Datum automatisch zu formatieren 25/4/2016 06.30 ändert: 00 PM

+0

Was * genau * meinst du mit "Datum ändert sich automatisch ins Format"? Wenn Sie eine 'DateTime' betrachten, hat sie * kein * Format ... –

+0

Das Posten von jsonStringToTable würde helfen – hardkoded

+0

Werfen Sie einen Blick auf' csv.WriteField'. Das kann derjenige sein, der die Daten in diesem Format schreibt – Pikoh

Antwort

2

jsonStringToTable ist, was Ihren JSON-String-Wert zu einem Datum entsprechend Ihrer Ländereinstellung macht. Wenn es wieder in eine Zeichenfolge umgewandelt wird, wird es in das Standardformat dieses Gebietsschemas konvertiert.

Um dies Sie eine Bedingung in der Schleife angeben müssen zu lösen, wenn Sie durch die Datentabelle Felder gehen:

for (var i = 0; i < dt.Columns.Count; i++) 
{ 
    var myVal = i == myDateColumnIndex ? row[i].ToString("yyyy-MM-dd HH:mm:ss"):row[i].ToString(); 
    csv.WriteField(myVal); 
} 

wenn Ihre Spalt Ihre Datumsspalt sind (zB durch Index), dann tun eine Zeichenkette (this might help) Ihres bevorzugten Formats.

0

Ihr Code verwendet die lokalen (die Maschine, von wo aus Sie Ihren Code ausgeführt haben) regionale Datumsformatoptionen beim Konvertieren von Datum/Uhrzeit in Zeichenfolge.

Verwandte Themen