我有一个包含字符串日期值的大型json。我正在使用以下代码将我的JSON转换为CSV:
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值是:
[{
"Amount": "35.80",
"Parentid": "abcd",
"code": "CGL",
"Effective_Date": "2016-04-25T18:30:00"
}]
转换此JSON后,上述日期会自动更改为格式25/4/2016 6:30:00 PM
答案 0 :(得分:2)
jsonStringToTable是根据您的语言环境使您的JSON字符串值成为日期的原因。当它转换回字符串时,它将以该语言环境的默认格式转换。
为了解决这个问题,你需要在浏览数据表字段时在循环中指定一个条件:
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 );
}
如果您的列是您的日期列(例如按索引),则执行首选格式的字符串(this might help)。
答案 1 :(得分:0)
将日期/时间转换为字符串时,您的代码使用本地(运行代码的机器)区域日期时间格式选项。