如何更改日期时间现在没有特殊字符?

时间:2019-06-21 10:36:45

标签: c# date

我要将数据从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 个答案:

答案 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") });