2015-07-08 3 views
-5

Мне передается строка "1/20/2015 8:01:25 PM", и мне нужно удалить :25 в секундной части строки, делая ее "1/20/2015 8:01 PM". Это в конечном итоге будет использоваться во многих строках даты, поэтому ему нужно будет работать для строки типа "11/11/2011 11:11:11 PM" и конвертировать ее в "11/11/2011 11:11 PM". Все это делается на C#, и любая помощь с этим будет принята с благодарностью.Изменение строкового формата

+0

https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx –

+1

Почему бы не преобразовать эту строку в DateTime, нуля секунд и конвертировать назад? –

+0

Вы гарантированно получаете один и тот же формат даты и времени каждый раз? –

ответ

3

Разберите строку в DateTime, затем .ToString() введите дату, чтобы получить желаемый формат.

var myString = "1/20/2015 8:01:25 PM"; 
var asDate = DateTime.Parse(myString); 
var resultingString = asDate.ToString("M/dd/yyyy h:mm tt"); 

Обратитесь к this MSDN статье для строк формата даты

+4

Это делает предположения о текущей культуре. В зависимости от среды, в которой этот код может работать, это может не быть безопасным предположением. –

1

Преобразование объекта строка дата для DateTime, а затем применить пользовательский формат, как:

var dateTimeObj = DateTime.ParseExact("1/20/2015 8:01:25 PM", "M/d/yyyy h:m:s tt", CultureInfo.InvariantCulture); 

var output = dateTimeObj.ToString("M/d/yyyy hh:mm tt", CultureInfo.InvariantCulture); 

Обратите внимание на сингл d, M, h, m и s в разборе, так что можно было бы использовать для одного, как а также двузначные значения.

1

Уловка этому знанию, что ваша строка ввода будет всегда будет отформатирована таким же образом.

Если это так, вы можете просто сделать это:

string s = "1/20/2015 8:01:25 PM"; 
string s2 = s.Substring(0, s.Length - 6) + s.Substring(s.Length - 3); 

Более надежный подход может заключаться в использовании DateTime.Parse() преобразовать в DateTime, а затем отформатировать его же вы хотите. Или еще лучше, сохраните значение в переменной DateTime, пока вам не понадобится отформатировать его так, как вы хотите.

+0

спасибо за кодирование моей идеи ... –

+1

@ThomasKrojer Обратите внимание, что этот ответ сохранит «AM», если это необходимо, вместо того, чтобы ослепить добавление «PM». –

+0

Да ... Я видел это уже и все еще живу в 24-часовом регионе –

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