我不知道以下字符串有什么问题:
"Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")"
我无法获得连接的字符串。我越来越Report(29-Dec-2009
。这就是全部,其余的都被排除在字符串之外。
是什么原因?
我不知道以下字符串有什么问题:
"Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")"
我无法获得连接的字符串。我越来越Report(29-Dec-2009
。这就是全部,其余的都被排除在字符串之外。
是什么原因?
试试这个:
string filename =
String.Format(
"Report({0:dd-MMM-yyyy} to {1:dd-MMM-yyyy})",
System.DateTime.Now, System.DateTime.Now.AddMonths(-1));
编辑:由于在您的下载框中,您的文件名在第一个空格中被破坏,您可以尝试其中一个:
filename = HttpUtility.UrlEncode(filename); // OR
filename = """" + filename + """";
似乎有些浏览器不能很好地处理空格:带空格的文件名在下载时被截断。请检查您是否可以在其他站点下载其他带有空格的文件名。
您需要将其分配给某些东西:
string s = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")"
更新:我刚刚看到你对这个问题的更新。你如何显示字符串?我猜您是在 GUI 中显示它,并且标签太短而无法显示完整的文本。
试试这个:
string newstring =
string.Format(
"Report ({0} to {1})",
System.DateTime.Now.ToString("dd-MMM-yyyy"),
System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
);
你将结果分配给什么?如果使用 string.Format 会更容易阅读代码
您没有将连接的结果分配给任何东西,所以不能使用它:
string myConcatenated = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + ")";
使用此代码...
string test = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " +
System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")";
我看到了以下结果。
Report(29-Dec-2009 to 29-Nov-2009)
可能是字符串稍后被截断。确保在运行此代码后立即设置断点并检查分配给它的变量的值(在我的情况下为测试)。
如果像您之前的问题一样,您正在使用此值来创建文件,则可能是“to”之前的空格导致了问题。尝试使用:
"Report("
+ System.DateTime.Now.ToString("dd-MMM-yyyy")
+ "To"
+ System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
+ ")"
相反,看看是否可以解决它。
如果这确实解决了它,您可能需要弄清楚如何引用整个文件名,这样它就不会被视为三个单独的参数"Report(29-Dec-2009"
,"to"
和"29-Nov-2009)"
. 或者干脆让您的报告名称不带空格。
我会选择后者,但我从根本上反对文件名中的空格——它们使简单的脚本更难编写:-)