使用,分隔符更改txt / csv文件中的日期格式

时间:2015-06-26 15:17:29

标签: c# csv datetime

我有很多包含数据的.txt个文件。数据以,分隔。

在第三列中,数据采用dd-mm-yyyy格式。但它必须是yyyy/mm/dd格式。更改机器格式不是一个解决方案。

文件足够小,可以加载到内存中并按以下方式打开,但我无法弄清楚如何解决日期问题。谁能帮帮我?

        foreach (string x in a)
        {
            string somePath = @"C:\test\";
            string filename = x;
            string path = Path.Combine(somePath, filename);

            string str = File.ReadAllText(path);
            str = str.Replace("AS", "");
            File.WriteAllText(path, str);
        }

2 个答案:

答案 0 :(得分:1)

以下是使用def find_matches_overlapping(text, pattern): lpat = len(pattern) - 1 matches = [] text = array("u", text) pattern = array("u", pattern) indexes = {} for i in range(len(text) - lpat): if text[i] == pattern[0]: indexes[i] = -1 for index, counter in list(indexes.items()): counter += 1 if text[i] == pattern[counter]: if counter == lpat: matches.append(index) del indexes[index] else: indexes[index] = counter else: del indexes[index] return matches def count_matches(text, pattern): return len(find_matches_overlapping(text, pattern)) ReadAllLines()的简短示例:

WriteAllLines()

答案 1 :(得分:0)

只需遍历所有行,拆分字符串,尝试解析它,然后以正确的格式将其写入输出文件。

foreach (string x in a)
{

    string somePath = @"C:\test\";
    string filename = x;
    string path = Path.Combine(somePath, filename);

    string str = File.ReadAllText(path);
    str = str.Replace("AS", "");
    var lines = str.Split('\n');
    foreach(var line in lines)
    {
        var parts = line.Split(',');
        if(parts.Length > 2)
        {
            var d = parts[2];
            DateTime dateValue;
            if (DateTime.TryParseExact(d, "dd-MM-yyyy", new CultureInfo("en-US"), 
                 DateTimeStyles.None, out dateValue))
                {
                    var dateTxt = dateValue.ToString("yyyy/mm/dd");
                      ...etc...

                 }
            }
        }
        File.WriteAllText(path, str);
    }
相关问题