2009-12-09 3 views
1

У меня есть строка DateTime в формате 24 ЧАСА .. "2009-12-31T23: 59: 59"
Я хочу, чтобы он был в этом формате .. " 31.12.2009 23:59:59 «То есть:« MM/DD/YYYY HH: MM: SS »

Когда я попытался скрыть его до строки, я получаю« 31.12.2009 11:59: 59 PM ".. хотя я могу написать код для манипуляции с строкой .. он не кажется эффективным. Кроме того, случай становится худшим, когда у меня есть значение dateTime как« 2009-1-1T1: 19: 15 ".. здесь, поскольку длина строки изменяется, я даже не могу отслеживать значение часов и месяцев с помощью подстроки() и convert.ToInt() ..

Я использую Visual Studio 2005, он бросает ошибку, говоря «Не удается неявно преобразовать DateTime в строку», когда я пишу это заявление: ..
Как настроить формат datetime или преобразовать DateTime в String с требуемым форматом

result = Convert.ToString(dateValue); 

Я упростить мой вопрос: Есть ли способ преобразовать "гггг-мм-ДДTчч: мм: сс" формата в "мм/дд/гггг чч: мм: сс" .. И он должен работать в Visual Studio 2005 ..

ответ

4

Вы должны использовать ParseExact, чтобы получить его обратно в DateTime:

string FormatDateTime(string dateString) { 
    DateTime dt = DateTime.ParseExact(dateString, "yyyy-MM-ddTHH:mm:ss", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None); 
    return dt.ToString("MM/dd/yyyy HH:mm:ss"); 
} 

Это должно дать вы желаемый результат, который вы ищете. Используя InvariantInfo, вы убедитесь, что системные настройки не заменяют косые черты тем, что вы в настоящее время определили в системе. Я думаю, что видел в комментариях, что у вас есть "." используется как ваш разделитель даты.

http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.dateseparator.aspx http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.invariantinfo.aspx

+0

не нужно писать ParseExact, просто нужно указать формат даты в date dateVaule.toString (date_format) .. как этот путь «MM»/'dd'/'yyyy' 'HH': 'mm': 'ss ".. thats enough ......... Нечестивость правильная .. –

+0

Что вы имеете в виду dateValue? Вы ничего не говорили об этом в своем оригинальном посте. Вам действительно нужно научиться задавать вопросы. Вы, вероятно, не понимаете, но если вы разрешите простой простой анализ и выясните формат даты, он занимает гораздо больше времени, чем просто предоставление его, синтаксическому анализатору. Вот почему существуют два разных метода. Второй Нечестивый выкинул всю свою машину с машины, которая, похоже, работает нестандартно. Но вы не должны взламывать свое собственное формирование, «/» - это разделитель даты, и вы хотите, чтобы он всегда был «/», используйте культуру, которая его поддерживает. –

+0

В вашем примере datestring –

1
string FormatDateString(string date_string) 
{ 
    DateTime date; 
    if (!DateTime.TryParse(date_string, out date) 
    { 
     return null; 
    } 

    return date.ToString("MM/dd/yyyy HH:mm:ss"); 
} 
+2

Я думаю, что формат должен быть «ММ„/“дд„/“гггг„„HH“: „мм“:“сс» –

+0

Анхоли, ты не возражаешь, объясняя значение апострофа годов в ваш формат? Я не знаком с этим. Thx :) – Russell

+2

Из msdn: "'- Представляет цитированную строку (апостроф). Отображает литеральное значение любой строки между двумя символами апострофа ('). Когда вы используете апостроф, вы произвольно определяете делиметр. –

2

что-то вроде:

string s = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss"); 
+1

Когда я попробовал код, я получаю следующее: DateTime.Now.ToString ("MM/dd/yyyy HH: mm: ss") \t "12.09.2009 10:26:09" –

+1

У него не было прав. Вы по умолчанию разделитель в вашей системе был определен как «.». вместо «/». См. Это свойство: http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.dateseparator.aspx –

+2

Да, из-за этого мы должны использовать «MM»/'dd'/'yyyy' ' HH ':' мм ':' сс». –