Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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
C# 如何以DD/MM/YYYY格式而不是DD/MM/YYYY格式将日期输出到CSV文件HH:MM:SS_C#_Excel_Csv_Json.net_Csvhelper - Fatal编程技术网

C# 如何以DD/MM/YYYY格式而不是DD/MM/YYYY格式将日期输出到CSV文件HH:MM:SS

C# 如何以DD/MM/YYYY格式而不是DD/MM/YYYY格式将日期输出到CSV文件HH:MM:SS,c#,excel,csv,json.net,csvhelper,C#,Excel,Csv,Json.net,Csvhelper,非开发人员正在尝试清除日期的格式。正在查看承包商创建的C#代码 这是用于将JSON对象转换为CSV格式的新代码。承包商使用了Newtonsoft和Newtonsoft.Linq,还使用了CSVhelper功能 string webData = System.Text.Encoding.UTF8.GetString(raw); var records = JsonConvert.DeserializeObject<IList<JournalImport>>(webData

非开发人员正在尝试清除日期的格式。正在查看承包商创建的C#代码

这是用于将JSON对象转换为CSV格式的新代码。承包商使用了Newtonsoft和Newtonsoft.Linq,还使用了CSVhelper功能

string webData = System.Text.Encoding.UTF8.GetString(raw);

var records = JsonConvert.DeserializeObject<IList<JournalImport>>(webData, new Newtonsoft.Json.Converters.IsoDateTimeConverter { DateTimeFormat = "dd/MM/yyyy" });

using (var writer = new System.IO.StreamWriter(journalsCsvSFD.OpenFile()))
using (var csv = new CsvHelper.CsvWriter(writer))
stringwebdata=System.Text.Encoding.UTF8.GetString(原始);
var records=JsonConvert.DeserializeObject(webData,Newtonsoft.Json.Converters.IsoDateTimeConverter{DateTimeFormat=“dd/MM/yyyy”});
使用(var writer=new System.IO.StreamWriter(journalsCsvSFD.OpenFile())
使用(var csv=new CsvHelper.CsvWriter(writer))
我当前的CSV输出“26/06/2019 12:18:56”


“2019年6月26日”所需的预期结果

要让Excel在导入时正确设置内容的格式很难。你可以告诉它做一件事,它会做完全不同的事。无论如何,高亮显示整个时间列,右键单击->格式化单元格。在“数字”选项卡下,不要转到“时间”类别,尝试转到“自定义”类别,我认为您将能够找到您要查找的内容。

CsvHelper允许您创建自定义类型转换器。因此,您可以为DateTime执行此操作,并根据需要设置格式

void Main()
{
    string webData = "[{\"date\":\"01/01/2018\",\"name\":\"toto\"}]";
    var records = JsonConvert.DeserializeObject<IList<JournalImport>>(webData, new Newtonsoft.Json.Converters.IsoDateTimeConverter { DateTimeFormat = "dd/MM/yyyy" });
    using (var writer = new System.IO.StreamWriter(File.Create(@"toto.csv")))
    using (var csv = new CsvHelper.CsvWriter(writer))
    {
        csv.Configuration.TypeConverterCache.AddConverter<DateTime>(new DateTimeCOnverter());
        csv.WriteRecords(records);
    }
}

public class JournalImport
{
    public DateTime Date { get; set; }
    public string Name { get; set; }
}

public class DateTimeCOnverter : ITypeConverter
{
    public object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        throw new NotImplementedException();
    }

    public string ConvertToString(object value, IWriterRow row, MemberMapData memberMapData)
    {
        if (value is DateTime date)
        {
            return date.ToString("dd/MM/yyyy");
        }
        return value?.ToString();
    }
}
void Main()
{
字符串webData=“[{\“date\”:\“01/01/2018\”,\“name\”:\“toto\”}]”;
var records=JsonConvert.DeserializeObject(webData,Newtonsoft.Json.Converters.IsoDateTimeConverter{DateTimeFormat=“dd/MM/yyyy”});
使用(var writer=new System.IO.StreamWriter(File.Create(@“toto.csv”))
使用(var csv=new CsvHelper.CsvWriter(writer))
{
csv.Configuration.TypeConverterCache.AddConverter(新的DateTimeCOnverter());
csv.书面记录(记录);
}
}
公共类港口
{
公共日期时间日期{get;set;}
公共字符串名称{get;set;}
}
公共类DateTimeCOnverter:ITypeConverter
{
公共对象ConvertFromString(字符串文本、IReaderRow行、MemberMapData MemberMapData)
{
抛出新的NotImplementedException();
}
公共字符串ConvertToString(对象值,IWriterRow行,MemberMapData MemberMapData)
{
如果(值为日期时间日期)
{
返回日期。ToString(“dd/MM/yyyy”);
}
返回值?.ToString();
}
}

您可以添加格式选项

使用(var writer=new System.IO.StreamWriter(journalsCsvSFD.OpenFile())
使用(var csv=new CsvHelper.CsvWriter(writer))
{
csv.Configuration.typeconverteroptioncache.GetOptions().Formats=new[]{“dd/MM/yyyy”};
csv.书面记录(记录);
}

我不知道在给定代码的情况下在何处执行此命令,但我认为您可以使用类似“outfile.Write(outputString)”[0]的命令,而不是直接输出输出字符串(类似于
outfile.Write(outputString);
);