【发布时间】:2019-12-12 13:26:53
【问题描述】:
我有一个这样的 CSV 文件:
abc;30.11.2021;xyz
我需要将日期值转换成这种格式:
abc;2021-11-30;xyz
对此有什么想法吗?
目前我这样做:
//config Ini auslesen für Quell- und Zieldatei
var dic = File.ReadAllLines("config.ini")
.Select(l => l.Split(new[] { '=' }))
.ToDictionary(s => s[0].Trim(), s => s[1].Trim());
//Wert für Quelle
string source = dic["source"];
//Wert für das Ziel
string target = dic["target"];
string filePath = source ;
var csv = File
.ReadLines(source)
.Select((line, index) => index == 0
? line + ";ExtID" // Neue Kopfzeile
: line + ";" + string.Concat(line.Split(';').Take(2)) // Spalte 1 + 2 in neue Spalte einfügen
)
.ToList();
File.WriteAllLines(target, csv);
所以我读取了一个 csv 文件,添加一列并填充此列,但老实说我不知道如何转换日期值。
【问题讨论】:
-
到目前为止,您尝试过什么,您到底卡在哪里?请展示您当前解决此问题的尝试,并指出您遇到问题的确切位置。
-
Stackoverflow 不能这样工作。没有人会用勺子喂你答案。为它工作并尝试自己找到解决方案。当你这样做时,你会有具体的疑问,你可以把这些带到这里。这个平台不是免费的编码服务。
-
将字符串解析为日期(给出当前格式)并使用
ToString将其转换为字符串(给出新格式)。剩下的就是 CSV 操作。 -
基本上有 2 个选项:1)创建将接收字符串并生成新字符串的转换函数(
.split('.')等)2)通过 DateTime 解析然后进行文本转换。 -
第三种方式。使用 CSV 定义表示数据的类。 Read 值并使用新格式将它们写回。 github.com/JoshClose/CsvHelper/issues/697。这是对象 2 的 1 个类定义,用于写入器和读取器映射器,以及使用一个流读取器和写入器的 3 行代码。