получить время из длинного формата - PullRequest
0 голосов
/ 14 февраля 2012

Я хочу время от этого типа строки

30-12-1899 14: 32: 54

string ReportTime = JobReportTime.Substring(9, 19);

, но когда я использую Подстроку, выдают ошибку "Индекс и счет должны относитьсяв расположение в строке. Имя параметра: count "

Ответы [ 5 ]

4 голосов
/ 14 февраля 2012

Первый параметр Substring - это startIndex.В вашем случае это будет:

string ReportTime = JobReportTime.Substring(11); // returns "14:32:54"

Если части дня и месяца также могут быть однозначными (например, «1-4-1899 14:32:54»), тогда может быть безопаснее извлечьчасть после пробела:

string ReportTime = JobReportTime.Substring(JobReportTime.IndexOf(' ') + 1);
0 голосов
/ 14 февраля 2012

Я бы порекомендовал вам использовать DateTime.ParseExact метод (String, String, IFormatProvider) .

const string dateTimeFormat = "dd-MM-yyyy HH:mm:ss";
const string dateTimeString = "30-12-1899 14:32:54";
DateTime dateTime = DateTime.ParseExact(dateTimeString, dateTimeFormat, CultureInfo.InvariantCulture);
Console.WriteLine(dateTime.TimeOfDay);

Я думаю, что код немного чище: он указывает, как явно DateTime анализировать строку.

0 голосов
/ 14 февраля 2012

Если вам нужна дополнительная функциональность, вы можете преобразовать ее в DateTime:

var dt = Convert.ToDateTime("30-12-1899 14:32:54");
time = dt.TimeOfDay.ToString();
// returns "14:32:54"
0 голосов
/ 14 февраля 2012

Попробуйте это (отредактированный последний ответ)

 DateTime time = DateTime.Parse("30-12-1899 14:32:54");
 string ReportTIme = time.ToString("HH:mm:ss tt").ToString();  
0 голосов
/ 14 февраля 2012

Аргументами подстроки являются начальная позиция и длина, а не начальный и конечный индексы. Вы можете использовать .Substring(11, 8), но так как Substring просто вернет остаток строки, если вы не укажете длину, .Substring(11) даст вам то, что вы ищете. Конечно, вам, вероятно, следует рассмотреть синтаксический анализ строки в DateTime и затем извлечь информацию о времени, как предлагали другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...