我正在将数据从 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。我怎样才能修复我的输出?
4 回答
LEATH
TA贡献1936条经验 获得超6个赞
您可以为此使用字符串插值,以使其更清晰易读。另外,不要在你不想要的字符串中放置任何东西......
var filePath = AppDomain.CurrentDomain.BaseDirectory +
$"\\Logs\\import-contacts-{DateTime.Today.AddDays(-1):yyyyMMdd}.csv";
或者(如果你喜欢 1-liner)...
var filePath = $"{AppDomain.CurrentDomain.BaseDirectory}\\Logs\\import-contacts-{DateTime.Today.AddDays(-1):yyyyMMdd}.csv";
这是一个工作示例...
https://dotnetfiddle.net/aYAgVr
注意 DateTime.Now将完全相同,因为您正在格式化输出以仅显示日期部分。我只是对不使用 DateTime 约会感到迂腐!
千巷猫影
TA贡献1829条经验 获得超7个赞
.
只需从方法中删除ToString()
。尝试像:
string = AppDomain.CurrentDomain.BaseDirectory + "\Logs\import-contacts-" + DateTime.Now.ToString("yyyyMMdd").Replace('/', ' ') + ".csv";
编辑(根据新要求):
DateTime.Now.AddDays(-1).ToString("yyyyMMdd")
慕慕森
TA贡献1856条经验 获得超17个赞
问题是您依靠当前的文化来提供正确的格式,但当前对不同的用户意味着不同的东西,并且显然不会产生您想要的格式。
解决方案很简单,使用特定的文化来获取特定的格式:
DateTime.Today.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture)
应始终使用点作为分隔符。
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
它会为你工作。
string path = string.Format(@"{0}Logs\import-contacts-{1}.csv", new object[] { AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyyMMdd") });
- 4 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消