如何更改 datetime.Now 没有特殊字符?

我正在将数据从 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。

我怎样才能修复我的输出?


POPMUISE
浏览 139回答 4
4回答

LEATH

您可以为此使用字符串插值,以使其更清晰易读。另外,不要在你不想要的字符串中放置任何东西......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 约会感到迂腐!

千巷猫影

.只需从方法中删除ToString() 。尝试像:string  = AppDomain.CurrentDomain.BaseDirectory + "\Logs\import-contacts-" + DateTime.Now.ToString("yyyyMMdd").Replace('/', ' ') + ".csv";编辑(根据新要求):DateTime.Now.AddDays(-1).ToString("yyyyMMdd")

慕慕森

问题是您依靠当前的文化来提供正确的格式,但当前对不同的用户意味着不同的东西,并且显然不会产生您想要的格式。解决方案很简单,使用特定的文化来获取特定的格式:DateTime.Today.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture)应始终使用点作为分隔符。

斯蒂芬大帝

它会为你工作。string path = string.Format(@"{0}Logs\import-contacts-{1}.csv", new object[] { AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyyMMdd") });
打开App,查看更多内容
随时随地看视频慕课网APP