2014-10-07 1 views
1

s_Time = DateTime.ParseExact("113388", "HHmmss", null);DateTime ParseExtract секунд, когда сс составляет более 59

Получение Ошибка при ss больше, чем 59. Как можно избежать этого. Если ss больше, чем 59, я хочу показать его как 00.

Как я могу это достичь?

Фактически у меня есть имя файла, которое содержит время для проверки. ss придет случайным образом, это может быть от 00 до 99, как бы то ни было, я должен показать 00, когда его терка, чем 59

+0

«сс» ожидает числа от 00 до 59 процентов документация http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx#ssSpecifier, если вам нужно что-то еще, вам придется настраивать синтаксический анализ строки. Кроме того, не должен ли он отображаться как 00 с дополнительной минуты? – scottheckel

+2

Не могли бы вы предоставить дополнительную информацию о том, почему вы хотите это сделать? Это помогло бы, если бы мы знали, означает ли вы, что это означает время суток или прошедшее время. Но в любом случае, не имеет смысла иметь 88 секунд в минуту. –

+0

Кроме того, предположим, вы имели в виду, что первым аргументом является строка, а не целое число? Если это так, вам понадобятся кавычки. –

ответ

1

Чтобы следить за моим комментарием, это имеет для меня смысл. Рассматривайте строку как добавление в часы и минуты, которые вы разбираете.

var temp = "113388"; 
s_Time = DateTime.ParseExact(temp.Substring(0, 4 
), "HHmm", null).AddSeconds(int.Parse(temp.Substring(4))); 

я только когда-либо проверить это в производство, когда вторая рука говорит 88, хотя =)

0

Hexxagonal probably has the most sensible solution, но если вы должны по какой-то причине нужно заменить последнюю часть строки (секунды) с «00», когда значение выше 59, и не обновления минутной части, то это должны работать:

var input = "113388"; // original 
var secsPart = input.Substring(4); 
// Get 00 if over 59, else keep the seconds as they are: 
var seconds = int.Parse(secsPart) > 59 ? "00" : secsPart; 
var editedInput = input.Substring(0,4) + seconds; 

var s_Time = DateTime.ParseExact(editedInput, "HHmmss", null); 
Смежные вопросы