系统日期格式导致文件中的日期在使用 IO 复制时发生更改.File.Copy().



前几天,当我的代码尝试从配置文件中的一行文本中解析日期时,用户遇到了异常。客户使用的是中文日期本地化,所以我认为问题出在解析上。

但是,在重现问题时,我发现文件本身中的文本是中文格式。此文件是从备份位置复制的,我验证该位置不是中文格式。

事实证明,文件之前是通过调用 IO 从该位置复制的。File.Copy(),文本从:

22/JUN/2016,00:00:00

22/6月/2016,00:00:00

文件的大小甚至发生了变化。

因此,尝试在此调用中解析该文本时会引发异常:

DateTime.ParseExact(timeString, datetimeFormat, CultureInfo.InvariantCulture)

数据不必本地化,因此我们始终使用 CultureInfo.InvariantCulture。但是,如果文件更改了日期格式,则会中断。

当我像往常一样复制并粘贴文件时,文件不会更改,这更加令人好奇。

我验证了在将区域格式更改为中文(简体,中国)后,在 Windows 10 上会出现此问题。

关于为什么是IO的任何想法。File.Copy() 导致此更改?

使用"TryParseExact"来解析日期时间总是好的。

回答您的问题时,您可能需要研究以下几点:

  1. 查看用于复制文件的代码。
  2. 尝试使用 StreamReader/StreamWriter 复制文件,请指定编码类型。

最新更新