DateTime.Now.ToString(“ M / d / yyyy HHmmss”)仅在部署位置返回月份

问题描述 投票:-1回答:1

创建新文件夹

string newFolder = Globals.applicationPath + @"BatchHistory\Batch" + DateTime.Now.ToString("M/d/yyyy HHmmss") + @"\";

在开发PC中,所有按预期方式工作的文件夹都被命名为:“ Batch12-23-2019 181504”

将控制台应用程序部署到服务器时,文件夹名称显示为“ Batch12”

任何线索为什么?

侧面详细信息:

  • 。net Framework 4.7.2
  • 输出类型:控制台应用程序
  • 本地开发环境:Win10
  • 已部署的环境:WinSrv 2016

问题实际上是部署位置上的区域性设置。

c# .net datetime formatting console-application
1个回答
1
投票

您的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似乎是-这就是为什么它出现在结果字符串中。

这意味着您部署的服务器的CurrentCultureDateSeparator property用作DateSeparator,这就是为什么当您使用CurrentCulture方法时它still产生/的原因。

我建议您在开发和部署的服务器上使用相同的区域性设置。或者,您可以在代码中将日期分隔符从DateSeparator更改为/,例如;

ToString
© www.soinside.com 2019 - 2024. All rights reserved.