File c文件的日期问题。ReadAllLines()

File c文件的日期问题。ReadAllLines(),file,date,csv,escaping,file.readalllines,File,Date,Csv,Escaping,File.readalllines,出于某种原因,File.ReadAllLines似乎在将所有日期从yyyy/mm/dd转换为yy/mm/dd时遇到了一个奇怪的问题 问题是,我使用的历史数据可以追溯到1901年之后,因此造成了速记日期符号的问题 奇怪的是它并没有对所有文件都这样做,我有几个运行这个脚本。然后我检查了物理文件,那里一切正常 它是一个有效的CSV,所有内容都封装为文本 有没有办法否定这一点,因为修复内存/流中的整个数据集是不可能的?已经检查过了,但是没有帮助 此时涉及的唯一其他代码是helper方法,但与此无关,因为

出于某种原因,File.ReadAllLines似乎在将所有日期从yyyy/mm/dd转换为yy/mm/dd时遇到了一个奇怪的问题

问题是,我使用的历史数据可以追溯到1901年之后,因此造成了速记日期符号的问题

奇怪的是它并没有对所有文件都这样做,我有几个运行这个脚本。然后我检查了物理文件,那里一切正常

它是一个有效的CSV,所有内容都封装为文本

有没有办法否定这一点,因为修复内存/流中的整个数据集是不可能的?已经检查过了,但是没有帮助

此时涉及的唯一其他代码是helper方法,但与此无关,因为它所做的唯一事情是创建一个文件名列表


谢谢

ReadAllLines不会像上面描述的那样格式化日期,我无法复制这个问题

将多余的ToString从

因为它已经是一个字符串了,这里的参数可能会错误地格式化该行

哦,请确保您是在文本编辑器中查看物理文件,而不是在excel中进行比较,否则它看起来会有所不同


你能发布一些不正常的示例日期吗?

这并不是一个答案,但我的问题似乎解决了

已关闭所有应用程序 进行了清洁工作 重新安装的Visual Studio 重新安装的dotnet framework 4.5.2 注册框架 为了过于谨慎,我在一个全新的项目中重写了我的代码

神奇的是,现在一切都正常运转


~z~我想我现在知道医生用抗生素打虫子的感觉了。你不确定是什么造成了问题,也不确定是什么造成了问题,但问题已经解决了~

谢谢。我把它拿走了。托斯特林不知道我为什么会在那里。这一点是正确的,但我使用记事本++来处理这些事情,而不是excel。最初所说的物理文件是正确的yyyy/mm/dd,但是ReadAllLines将其读取为yy/mm/dd。ReadAllLines本身没有任何特殊功能,然后闭上眼睛读取这些行,并按原样提供数据。检查。@user734028谢谢您的参考,这正是我的想法,这就是为什么这是如此奇怪,因为您可以从我的屏幕截图中看到日期值被破坏了。唯一运行的其他自定义代码是一个批量文件获取方法。正是我的观点,它永远不会发生,因此我的问题是,目前这是一个非常简单的应用程序,有一个非常简单的csv 4937行,这仅仅是一个划痕。
public static string[] readFileToStringArray(string filePath = null, string fileName = null)
{
    string[] lines = null;
    if (File.Exists(filePath + fileName))
    {
        //lines = File.ReadAllLines(filePath + fileName);
        lines = File.ReadAllLines(filePath + fileName, Encoding.UTF8);
        string unescape = String.Empty;
        List<string> thisCSV = new List<string>();
        foreach (string line in lines)
        {
            unescape = line.Replace("\"", "");
            thisCSV.Add(unescape );
        }
        lines = thisCSV.ToArray();
    }
    return lines;
}
public static List<string> GetFilesinDirectory(string filesPath)
{
    List<string> files = new List<string>();
    string physicalFilesPath = (string)HttpContext.Current.Server.MapPath(filesPath);
    System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(physicalFilesPath);
    foreach (var file in dir.GetFiles())
    {
        string thisfile = physicalFilesPath + "\\" + (string)file.Name;
        files.Add(thisfile);
    }
    return files;
}
unescape = line.ToString().Replace("\"", "");