我不知道以下字符串有什么问题:
"Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")"
我无法获得连接字符串。我得到了Report(29-Dec-2009
。这就是全部
剩下的就从字符串中消失了。
是什么原因?
答案 0 :(得分:9)
试试这个:
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 + """";
似乎有些浏览器不能很好地处理空格:Filenames with spaces are truncated upon download。请检查一下,您可以在其他网站下载带有空格的其他文件名。
答案 1 :(得分:3)
您需要将其分配给某些内容:
string s = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + " to " + System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy") + ")"
更新:我刚看到您对该问题的更新。你是如何显示字符串的?我猜你在GUI中显示它并且标签太短而不能显示完整的文本。
答案 2 :(得分:2)
试试这个:
string newstring =
string.Format(
"Report ({0} to {1})",
System.DateTime.Now.ToString("dd-MMM-yyyy"),
System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
);
答案 3 :(得分:1)
您将结果分配给哪些人?如果使用string.Format
,则更容易阅读代码答案 4 :(得分:1)
您没有将连接结果分配给任何内容,因此无法使用它:
string myConcatenated = "Report(" + System.DateTime.Now.ToString("dd-MMM-yyyy") + ")";
答案 5 :(得分:0)
使用此代码......
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)
可能是字符串稍后被截断。确保在运行此代码后立即设置断点并检查分配给它的变量的值(在我的情况下测试)。
答案 6 :(得分:0)
如果在previous question中使用此值来创建文件,则可能是“to”之前的空格导致了问题。尝试使用:
"Report("
+ System.DateTime.Now.ToString("dd-MMM-yyyy")
+ "To"
+ System.DateTime.Now.AddMonths(-1).ToString("dd-MMM-yyyy")
+ ")"
而是看看是否修复了它。
如果 修复了它,你可能需要弄清楚如何引用整个文件名,这样它就不会被视为三个独立的参数"Report(29-Dec-2009"
,{{ 1}}和"to"
。或者只是将报告名称保留为空格。
我会选择后者,但后来我从根本上反对文件名中的空格 - 它们使得简单的脚本更难写: - )