Как изменить datetime.Now без специальных символов? - PullRequest
2 голосов
/ 21 июня 2019

Я экспортирую данные из 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 ]

3 голосов
/ 21 июня 2019

Вы можете использовать для этого интерполяцию строк, чтобы сделать ее более понятной для чтения. Кроме того, просто не помещайте в строку ничего, что вам не нужно ...

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 для свидания!

2 голосов
/ 21 июня 2019

Проблема в том, что вы полагаетесь на текущую культуру , чтобы обеспечить правильный формат, но текущий означает разные вещи для разных пользователей и, очевидно, не производит формат, который вы хочу.

Решение простое, используйте конкретную культуру, чтобы получить определенный формат:

DateTime.Today.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture)

всегда должен использовать точки в качестве разделителей.

2 голосов
/ 21 июня 2019

Просто удалите . из метода ToString(). Попробуйте как:

string  = AppDomain.CurrentDomain.BaseDirectory + "\Logs\import-contacts-" + DateTime.Now.ToString("yyyyMMdd").Replace('/', ' ') + ".csv";

РЕДАКТИРОВАТЬ (за новый запрос):

DateTime.Now.AddDays(-1).ToString("yyyyMMdd")
0 голосов
/ 21 июня 2019

Это будет работать для вас.

string path = string.Format(@"{0}Logs\import-contacts-{1}.csv", new object[] { AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyyMMdd") });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...