Я также попытался экранировать символ "/" в строке форматирования, но он не совсем сработал. Моя конечная цель - получить дату с символами "/" в качестве разделителей. Я предполагаю, что могу использовать DateTime.ToString("dd/MM/yyyy").Replace('.', '/')
, но это немного страшно.
DateTime ToString ( "dd/MM/yyyy" ) возвращает dd.MM.yyyy
Ответ 1
Символы /
в строках формата даты/времени означают "независимо от разделителя даты поставщика формата". Поскольку вы не предоставляете поставщика формата Thread.CurrentCulture
, и в вашем случае текущая культура использует .
как разделитель даты.
Если вы хотите использовать литеральную косую черту, поместите ее в одинарные кавычки:
dateTime.ToString("dd'/'MM'/'yyyy");
В качестве альтернативы вы можете указать поставщика формата, где разделитель дат /
:
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
Все вышеперечисленное задокументировано в MSDN.
Ответ 2
string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
Ответ 3
Это связано с тем, что ToString
работает по умолчанию в соответствии с текущей культурой:
Этот метод использует информацию форматирования, полученную из текущего культура.
Итак, переопределите это:
string date = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
Ответ 4
Это работает (обратите внимание на InvariantCulture
):
DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)
Если a CultureInfo
не указано, будет использоваться CurrentCulture
. Если это культура, которая не использует слэши в качестве разделителей в датах, она заменяется любым фактическим разделителем даты культуры.