Давайте более глубокий ..
Response.Write
метод не имеет перегрузки для DateTime
, поэтому это вызывает Response.Write(object)
overload. И вот как это implemented;
public virtual void Write(Object value)
{
if (value != null)
{
IFormattable f = value as IFormattable;
if (f != null)
Write(f.ToString(null, FormatProvider));
else
Write(value.ToString());
}
}
С DateTime
implementes IFormattable
интерфейс, это будет генерировать
f.ToString(null, FormatProvider)
в качестве результата. И от DateTime.ToString(String, IFormatProvider)
overload.
Если формат null
или пустая строка (""), the standard format specifier, "G" используется.
Похоже, ваши CurrentCulture
«ы ShortDatePattern
является M/d/yyyy
и LongTimePattern
является h:mm:ss tt
, и именно поэтому вы получаете 2/5/2015 3:00:00 PM
в результате.
В качестве решения вы можете получить строковое представление своего DateTime
с использованием метода .ToString()
и использовать его для загрузки HttpResponse.Write(String)
перегрузки, чтобы получить точное представление.
Response.Write(endDateDt.ToString("dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture));
Вы не форматируете выход ... Это то, что вы делаете неправильно. Обратите внимание, что значение 'DateTime' * * не имеет формата, это просто значение, представляющее момент времени, формат, который вы его обрабатывали, не имеет отношения к этому, он используется только для синтаксического анализа входной строки. Когда вы напишете его обратно, либо вы укажете формат, либо вы получите формат по умолчанию в зависимости от текущей культуры. –