2015-02-14 5 views
2

Я пытаюсь преобразовать строку в формат Datetime это мой кодC# строка для вывода даты и времени Неправильный формат

CultureInfo culture = new CultureInfo("da-DK"); 
DateTime endDateDt = DateTime.ParseExact("05-02-2015 15:00", "dd-MM-yyyy HH:mm", culture); 
Response.Write(endDateDt); 

Это выход результата

2/5/2015 3 : 00: 00 PM

выход Я ищу должен быть

05-02-2015 15:00

Что я делаю неправильно?

+1

Вы не форматируете выход ... Это то, что вы делаете неправильно. Обратите внимание, что значение 'DateTime' * * не имеет формата, это просто значение, представляющее момент времени, формат, который вы его обрабатывали, не имеет отношения к этому, он используется только для синтаксического анализа входной строки. Когда вы напишете его обратно, либо вы укажете формат, либо вы получите формат по умолчанию в зависимости от текущей культуры. –

ответ

4

Вы не форматируете строковое представление объекта DateTime. Если вы не указали формат, вы получите формат по умолчанию, основанный на текущей культуре.

Для получения желаемых результатов, вы можете попробовать это:

endDateDt.ToString("dd-MM-yyyy HH:mm"); 
+0

Спасибо за ответ – Aleu

+0

@Aleu Добро пожаловать. Рад помочь. –

1

Давайте более глубокий ..

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)); 
+1

Спасибо, что нашли время, чтобы написать больше в долговом ответе. Это оценено. – Aleu

+0

@Aleu Рад помочь. –

Смежные вопросы