我要将数据从SQL查询导出到CSV,然后将csv文件重命名为带日期的名称,但是我将csv文件重命名为没有任何特殊字符时会遇到问题。
我尝试替换“。”或带有空格的“ /”,但这对我没有用。我的代码如下:
string filepath1 = AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\import-contacts-" +
DateTime.Now.Date.ToString("yyyy.MM.dd").Replace('/', ' ') + ".csv";
我的输出应该是import-contacts-20190606.csv
但是我目前正在导入import-contacts-2019.06.06.csv。
我如何解决我的输出?
答案 0 :(得分:3)
您可以为此使用字符串插值,以使其更清晰易读。另外,只是不要在不需要的字符串中添加任何内容...
var filePath = AppDomain.CurrentDomain.BaseDirectory +
$"\\Logs\\import-contacts-{DateTime.Today.AddDays(-1):yyyyMMdd}.csv";
或(如果您希望使用1缸套)...
var filePath = $"{AppDomain.CurrentDomain.BaseDirectory}\\Logs\\import-contacts-{DateTime.Today.AddDays(-1):yyyyMMdd}.csv";
这是一个可行的例子...
https://dotnetfiddle.net/aYAgVr
注意 DateTime.Now
的工作原理完全相同,因为您正在格式化输出以仅显示日期部分。我只是对不使用DateTime做约会而感到草!
答案 1 :(得分:2)
只需从.
方法中删除ToString()
。试试:
string = AppDomain.CurrentDomain.BaseDirectory + "\Logs\import-contacts-" + DateTime.Now.ToString("yyyyMMdd").Replace('/', ' ') + ".csv";
编辑(按新要求):
DateTime.Now.AddDays(-1).ToString("yyyyMMdd")
答案 2 :(得分:2)
问题是您依靠当前文化提供正确的格式,但是 current 对不同的用户意味着不同的东西,并且显然不会产生所需的格式。
解决方案很简单,使用特定的区域性来获取特定的格式:
DateTime.Today.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture)
应始终使用点作为分隔符。
答案 3 :(得分:0)
它将为您工作。
string path = string.Format(@"{0}Logs\import-contacts-{1}.csv", new object[] { AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyyMMdd") });