创建新文件夹
string newFolder = Globals.applicationPath + @"BatchHistory\Batch" + DateTime.Now.ToString("M/d/yyyy HHmmss") + @"\";
在开发PC中,所有按预期方式工作的文件夹都被命名为:“ Batch12-23-2019 181504”
将控制台应用程序部署到服务器时,文件夹名称显示为“ Batch12”
任何线索为什么?
侧面详细信息:
问题实际上是部署位置上的区域性设置。
您的DateTime.Now.ToString()
方法可能在您部署的位置上也创建了“某种”格式,但是正斜杠(/
)不能在Windows中是文件夹名称的一部分。
发件人:Naming Files, Paths, and Namespaces
The following reserved characters: < (less than) > (greater than) : (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark) * (asterisk)
[当您尝试命名文件夹时,它看起来像是在第一个/
字符的前面分配,在您的情况下为Batch12
。
请记住,the "/"
custom format specifier在自定义日期字符串上具有“替换我当前的区域性或提供的区域性日期分隔符”的特殊含义。在开发人员个人计算机中,"/"
的CurrentCulture
似乎是-这就是为什么它出现在结果字符串中。
这意味着您部署的服务器的CurrentCulture
将DateSeparator
property用作DateSeparator
,这就是为什么当您使用CurrentCulture
方法时它still产生/
的原因。
我建议您在开发和部署的服务器上使用相同的区域性设置。或者,您可以在代码中将日期分隔符从DateSeparator
更改为/
,例如;
ToString