2015-03-24 5 views
0

Я получаю этот раз строку даты с Sharepoint:Как преобразовать эту строку времени даты?

2013-01-01 08:00:00:000 

Я хочу, чтобы преобразовать его в

2013-01-01 08:00:00 AM 

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

ответ

3

Лучший вариант разбора его на DateTime и получить его строковое представление в определенном формате.

string s = "2013-01-01 08:00:00:000"; 
DateTime dt; 
if(DateTime.TryParseExact(s, "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture, 
          DateTimeStyles.None, out dt)) 
{ 
    dt.ToString("yyyy-MM-dd HH:mm:ss tt", CultureInfo.InvariantCulture).Dump(); 
    // 2013-01-01 08:00:00 AM 
} 

Jon's comment основе, вы можете использовать ParseExact, а также.

DateTime dt = DateTime.ParseExact("2013-01-01 08:00:00:000", 
            "yyyy-MM-dd HH:mm:ss:fff", 
            CultureInfo.InvariantCulture); 
string s = dt.ToString("yyyy-MM-dd HH:mm:ss tt", CultureInfo.InvariantCulture); 

Или вы можете форматировать непосредственно, что ParseExact возвращаемого значения;

string s = DateTime.ParseExact("2013-01-01 08:00:00:000", 
           "yyyy-MM-dd HH:mm:ss:fff", 
           CultureInfo.InvariantCulture) 
        .ToString("yyyy-MM-dd HH:mm:ss tt", CultureInfo.InvariantCulture); 
+2

Это было слишком быстро! +1 –

+4

В то время как 'TryParseExact' подходит для введенных пользователем данных, если ожидается, что это будет правильно, и это нормально, если неверные данные приводят к исключению, это стоит, по крайней мере, рассматривать вместо использования' ParseExact'. –

+0

Ничего себе, такой быстрый ответ! Благодаря! Это работает! У меня есть еще один вопрос. Есть ли способ найти формат даты и времени, а затем проанализировать его в соответствии с этим форматом? Потому что времена могут быть разными в зависимости от часового пояса – coffeeak

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