繁体   English   中英

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

[英]How to output dates into CSV file in DD/MM/YYYY format instead of DD/MM/YYYY HH:MM:SS

非开发人员在这里尝试清除日期格式。 寻找对承包商创建的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))

我当前的CSV输出为“ 26/06/2019 12:18:56”。

预期结果为“ 26/06/2019”

让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();
    }
}

您可以添加格式选项。

using (var writer = new System.IO.StreamWriter(journalsCsvSFD.OpenFile()))
using (var csv = new CsvHelper.CsvWriter(writer))
{
    csv.Configuration.TypeConverterOptionsCache.GetOptions<DateTime>().Formats = new[] { "dd/MM/yyyy" };
    csv.WriteRecords(records);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM